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.


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 .


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.


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


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”.


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.


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


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.


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!


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!


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.


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>

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.


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.


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.


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ął.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.