IIS Express wyświetla błąd odmowy dostępu podczas debugowania ASP.NET MVC

103

Utworzyłem projekt ASP.NET MVC 3 i używam IIS Express jako serwera internetowego podczas tworzenia. Kiedy próbuję debugować, pojawia się poniższy komunikat o błędzie.

Jak można to rozwiązać?

Błąd serwera w aplikacji „/”.

Odmowa dostępu. Opis: wystąpił błąd podczas uzyskiwania dostępu do zasobów wymaganych do obsługi tego żądania. Serwer może nie być skonfigurowany pod kątem dostępu do żądanego adresu URL.

Komunikat o błędzie 401.2 .: Unauthorized: Logowanie nie powiodło się z powodu konfiguracji serwera. Sprawdź, czy masz uprawnienia do przeglądania tego katalogu lub strony na podstawie podanych poświadczeń i metod uwierzytelniania włączonych na serwerze sieci Web. Aby uzyskać dodatkową pomoc, skontaktuj się z administratorem serwera WWW.

Kris-I
źródło
3
czy używasz IISExpress bez uprawnień administracyjnych?
chandmk
2
Więc po pewnym czasie waliłem w to głową, w końcu zdałem sobie sprawę, że to dlatego, że VS nie ustawił domyślnej strony i najwyraźniej IISExpress.exe nie podaje listy folderów, aby to było oczywiste.
Mark Allen

Odpowiedzi:

114

Jeśli używasz programu Visual Studio, możesz również kliknąć projekt lewym przyciskiem myszy w Eksploratorze rozwiązań i zmienić właściwość Uwierzytelnianie systemu Windows na Włączone w oknie Właściwości .

Jason
źródło
2
To nie jest specyficzne dla Visual Studio 2012, można to zrobić przynajmniej w Visual Studio 2010.
Loïc Lopes
5
Pracował dla mnie w VS 2013.
kaybee99
2
Musisz także wyłączyć uwierzytelnianie anonimowe.
Glazed
1
W eksploratorze rozwiązań kliknij nazwę projektu pod węzłem rozwiązania, a następnie przejdź do okna Właściwości, tam możesz zobaczyć właściwość Uwierzytelnianie systemu Windows ustaw ją na Włączone
sairfan
1
Nie widzę tego ustawienia w żadnym miejscu w oknie właściwości. Używam VS 2015.
Mark Bonafe
99

Przyczyną tego problemu było to, że usługi IIS Express nie zezwalały na uwierzytelnianie systemu Windows. Można to włączyć, ustawiając

<windowsAuthentication enabled="true">

w pliku applicationhost.config znajdującym się w C: \ Users [nazwa użytkownika] \ Documents \ IISExpress \ config.

Ant Swift
źródło
19
Program Visual Studio 2010 i 2012 może dodać to ustawienie dla Ciebie, dla każdego projektu, aby ustawienie globalne nie zostało zmienione z jego wartości domyślnej, zobacz stackoverflow.com/a/7168308/23566
Robert Claypool
Próbuję tego ustawienia, ponieważ sporadycznie otrzymuję ten błąd w VS 2013 , zobaczmy, czy to pomoże, dam ci znać.
Matt,
2
Lepiej, jeśli używasz% userprofile% \ documents \ iisexpress \ config \ applicationhost.config. Mój był na D: (dzięki Dan! Danesparza.net/2014/09/… )
Jeramy Rutley,
To jedyne rozwiązanie, które zadziałało dla mnie, wielkie dzięki!
Mohammad Anini,
Wypróbowałem to w VS 2017 i nie zadziałało. Rozwiązanie opublikowane przez Jasona zadziałało.
myroslav
73

Skorzystałem z odpowiedzi Jasona, ale chciałem wyjaśnić, jak dostać się do nieruchomości.

  1. Wybierz projekt w Eksploratorze rozwiązań

wprowadź opis obrazu tutaj

  1. F4 aby dostać się do właściwości (innych niż właściwości prawego kliknięcia)
  2. Zmień uwierzytelnianie systemu Windows na włączone

wprowadź opis obrazu tutaj

Tony L.
źródło
3
Wielkie dzięki za przeliterowanie tego i wskazanie, że należy zmienić właściwości F4.
PeterDNCO,
1
Dziękuję Ci! Musiałem również ustawić „Anonimowe uwierzytelnianie” na „Włączone”.
Mahesh
1
Wielkie dzięki!
FunMatters
1
Jesteś piękna.
koszherjellyfish
1
Używam VS 2015, to nie istnieje!
Mark Bonafe,
18

Hosting w IIS Express: 1. Kliknij projekt w Eksploratorze rozwiązań, aby wybrać projekt. 2. Jeśli panel Właściwości nie jest otwarty, otwórz go (F4). 3. W panelu Właściwości projektu: a) Ustaw „Anonimowe uwierzytelnianie” na „Wyłączone”. b) Ustaw „Uwierzytelnianie systemu Windows” na „Włączone”.

Daniel
źródło
12

W moim przypadku musiałem otworzyć plik:

C:\...\Documents\IISExpress\config\applicationhost.config

Miałem to w pliku:

  <authentication>
  <anonymousAuthentication enabled="true" User="" />

Właśnie usunąłem tę User=""część. Naprawdę nie wiem, jak to się tam dostało ... :)

Uwaga: upewnij się, że na końcu applicationhost.config:

   .
   .
   .
   <location path="MyCompany.MyProjectName.Web">
        <system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="true" />
                    <windowsAuthentication enabled="false" />
                </authentication>
            </security>
        </system.webServer>
    </location>
</configuration>

Możesz również zajrzeć tutaj: https://stackoverflow.com/a/10041779/114029

Teraz mogę uzyskać dostęp do strony logowania zgodnie z oczekiwaniami.

Leniel Maccaferri
źródło
1
Podążałem za Twoimi śladami, ale to nie działa dla mnie. Jeśli zostanie otwarty od vs2010, działa dobrze, jaki jest problem w porównaniu z 2013
GANI
@ user1016740 Nie jestem pewien, ponieważ istnieje mnóstwo możliwości / ścieżek, którymi można podążać, aby spróbować rozwiązać ten problem. Opisane tutaj kroki rozwiązały problem w moim środowisku, które moim zdaniem różni się od twojego.
Leniel Maccaferri
8

W moim przypadku poprzednie uruchomienie mojej aplikacji z VS zarezerwowało adres URL. Mogłem to zobaczyć, uruchamiając w konsoli:

netsh http show urlacl

aby usunąć tę rezerwację, uruchomiłem to w konsoli z podwyższonym poziomem uprawnień:

netsh http delete urlacl http://127.0.0.1:10002/

Znalazłem kroki tutaj rozwiązać mój problem.

Używam VS2013

BillDarcy
źródło
Jest to bardzo przydatne, jeśli kiedykolwiek edytowałeś plik applicationhost.config, aby uruchomić witrynę na wielu portach jednocześnie. Usunięcie wpisów z pliku .config nie powoduje usunięcia żadnych rezerwacji w netsh. Dzięki.
Dusda
5

Musiałem uruchomić Visual Studio, Administrative Modeaby pozbyć się tego błędu.

Serj Sagan
źródło
3

Miałem też ten sam problem i wreszcie udało mi się go pokonać.

Solution ExplorerRight click on projectPropertiesWeb tabProject Url

Wybrałem inny numer portu i wszystko było w porządku!

frogatto
źródło
1

Żadne z powyższych nie zadziałało dla mnie. To działało dla mnie wcześniej. Potem zdałem sobie sprawę, że pracowałem nad utworzeniem hostowanego połączenia na moim laptopie i współdzieliłem połączenie internetowe z moim bezprzewodowym połączeniem sieciowym.

Aby naprawić mój problem:

Wybierz kolejno Panel sterowania> Sieć i Internet> Połączenia sieciowe

Kliknij prawym przyciskiem myszy dowolne dodatkowe połączenie sieci bezprzewodowej, które możesz mieć (moje nazywało się Połączenie sieci bezprzewodowej 2) i kliknij `` Właściwości ''.

Przejdź do zakładki „Udostępnianie” u góry.

Usuń zaznaczenie pola „Zezwalaj innym użytkownikom sieci na łączenie się przez połączenie internetowe tego komputera”.

Kliknij OK> następnie Zastosuj.

Mam nadzieję że to pomoże!

Ryan C.
źródło
1

Otworzyłem mój plik web.config oraz znalazłem i usunąłem tę sekcję:

<authorization>
  <deny users="?" />
</authorization>

i moja witryna pojawiła się, ale są problemy z uwierzytelnianiem.

kfn
źródło
Dobrze, pomogło to rozwiązać problem, ale teraz mam kilka innych problemów, które muszę naprawić.
Jamshaid Kamran
0

Właśnie naprawiłem ten problem w IIS EXPRESS, edytując plik .config hosta aplikacji w sekcji lokalizacji określonej poniżej. Ustawiłem uwierzytelnianie systemu Windows w Visual Studio 2012, ale kiedy przeszedłem do XML, wyglądało to tak.

tag uwierzytelniania systemu Windows musiał zostać dodany poniżej, jak pokazano.

<windowsAuthentication enabled="true" />

<location path="MyApplicationbeingDebugged">
        ``<system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="false" />
                    <!-- INSERT TAG HERE --> 
                </authentication>
            </security>
        </system.webServer>
</location>
user3507561
źródło
0

Zmagałem się z tym problemem, próbując stworzyć prostą aplikację dla SharePoint przy użyciu Provider Hosted.

Po przejściu przez plik applicationhost.config w sekcji basicAuthentication ustawiono wartość false. Zmieniłem to na true, aby w moim scenariuszu przekroczyć 401.2. Istnieje wiele innych łączy wskazujących, jak znaleźć plik applicationhost.config dla usług IIS Express.

kfrosty
źródło
0

Nigdzie nie widziałem tej „pełnej” odpowiedzi; Właśnie zobaczyłem ten o zmianie numerów portów po tym, jak to opublikowałem, więc meh.

Upewnij się, że we właściwościach projektu w programie Visual Studio ten adres URL projektu nie jest przypisany do tego samego adresu URL lub portu, który jest używany w usługach IIS dla jakichkolwiek powiązań witryn.

Szukam „dlaczego”, ale moje założenie jest takie, że zarówno IIS, jak i IIS Express programu Visual Studio używają tego samego katalogu podczas tworzenia katalogów wirtualnych, a program Visual Studio może tworzyć tylko nowe katalogi wirtualne i nie może ich modyfikować wszystko, co usługi IIS utworzyły podczas stosowania powiązań z lokacją.

nie krępuj się, popraw mnie, dlaczego.

user1040975
źródło
0

Nasza strona błędu znajdowała się za stroną logowania, ale strona logowania miała błąd w jednej z kontrolek, co tworzy nieskończoną pętlę.

Usunęliśmy wszystkie kontrolki z naruszającej strony i dodawaliśmy je z powrotem jeden po drugim, aż do znalezienia i naprawienia właściwej kontrolki.

Atron Seige
źródło
0

W moim przypadku (aplikacja ASP.NET MVC 4) Global.asaxbrakowało pliku. Pojawiał się w eksploratorze rozwiązań z wykrzyknikiem. Wymieniłem go i błąd zniknął.

Mojżesz Machua
źródło