„401 Unauthorized” w katalogu

86

Zakładam, że jest to błąd IIS, ponieważ nie dzieje się tak, jeśli uruchomię projekt na komputerze lokalnym.

Moje arkusze stylów mam pod adresem ~/Content/css

Żadne pliki w tym katalogu nie wczytują się na stronie, a kiedy przechodzę do nich bezpośrednio, pojawia się błąd serwera:

401 - Unauthorized: odmowa dostępu z powodu nieprawidłowych poświadczeń.

Nie masz uprawnień do przeglądania tego katalogu lub strony przy użyciu podanych poświadczeń.

Dzieje się tak tylko z tym katalogiem, nie mam problemu z dostępem do innych plików. Czy jest coś, co muszę zrobić w usługach IIS7, aby to zatrzymać?

Steven
źródło

Odpowiedzi:

46

Prawdopodobnie nie masz uprawnienia IUSR_ nazwa_komputera do tego folderu. Właśnie wykonałem szybkie skanowanie i wygląda na to, że znajdziesz tutaj potrzebne informacje .

Jeśli tak nie jest, czy przeglądarka monituje o podanie nazwy użytkownika i hasła? Jeśli tak, może się zdarzyć, że usługi IIS są skonfigurowane do używania tylko uwierzytelniania zintegrowanego, zgodnie z opisem tutaj .

m.edmondson
źródło
4
Jeśli używasz puli aplikacji do zarządzania dostępem do bazy danych / systemu plików, nie rób tego. Czytaj dalej, aby zobaczyć odpowiedź imanabidi poniżej.
Ryan Shillington
dzięki, w moim przypadku właśnie dodałem wszystkich z pełną kontrolą
MorenajeRD
8
support.microsoft.com/kb/313075 - ta strona już nie istnieje. @ m.edmondson
Divya
294
  1. Otwórz usługi IIS i wybierz witrynę, która powoduje błąd 401
  2. Wybierz właściwość uwierzytelniania w nagłówku usług IIS
  3. Wybierz uwierzytelnianie anonimowe
  4. Kliknij go prawym przyciskiem myszy, wybierz Edytuj i wybierz Tożsamość puli aplikacji
  5. Uruchom ponownie witrynę i powinno działać
jasenkoh
źródło
13
Działa, ale dlaczego? Czy możesz wyjaśnić trochę więcej?
nthapa
2
Wydaje się, że to działa, ponieważ domyślnie „określonym użytkownikiem” do anonimowego uwierzytelniania jest IUSR, jak wspomniano w zaakceptowanej odpowiedzi. Jednak tożsamość ustawiona w puli aplikacji musi mieć uprawnienia do całej witryny sieci Web, w przeciwnym razie witryna nie zostanie załadowana. Więc chociaż moje konto IUSR nie miało dostępu (w rzeczywistości wydaje się nie istnieć), konto, z którego korzysta pula aplikacji, ma.
Johann
6
To działa, ale mylące jest to, że kiedyś działało dobrze przez około 2 lata, a dziś bez znanego powodu przestało działać ... Twoje rozwiązanie to naprawiło.
Serj Sagan
Spędziłem godziny nad tym problemem i nie miałem szczęścia, dopóki go nie znalazłem! Miałem aplikację sieciową MVC 5, która po opublikowaniu w trybie wydania, a następnie załadowanie witryny na chrome, zawartość się załadowała, ale style nie. Linki są tam i ścieżki są poprawne, ale wszystkie były puste! Ta poprawka rozwiązała mój problem.
GIVE-ME-CHICKEN
w moim przypadku po prostu musiałem włączyć uwierzytelnianie anonimowe, ponieważ było ono domyślnie wyłączone podczas tworzenia aplikacji
Paul
14
  • Otwórz IIS
  • wybierz witrynę, w której napotykasz problem

  • Wybierz poniżej

wprowadź opis obrazu tutaj

- Kliknij prawym przyciskiem myszy Anonimowe uwierzytelnianie, kliknij edytuj i postępuj zgodnie z poniższymi instrukcjami

wprowadź opis obrazu tutaj

Siddhartha
źródło
5

Nie masz uprawnień do przeglądania tego katalogu lub strony przy użyciu podanych poświadczeń.

Stało się tak pomimo faktu, że użytkownik jest już uwierzytelniony przez Active Directory.

Może być wiele przyczyn błędu Odmowa dostępu, ale jeśli uważasz, że wszystko zostało już poprawnie skonfigurowane w aplikacji internetowej, może być zapomniany mały szczegół. Upewnij się, że dajesz użytkownikom uwierzytelnionym odpowiednie uprawnienia dostępu do katalogu aplikacji sieci Web.

Oto kroki, które podjąłem, aby rozwiązać ten problem.

  1. Kliknij prawym przyciskiem myszy katalog, w którym przechowywana jest aplikacja internetowa, wybierz Właściwości i kliknij kartę Zabezpieczenia.

  2. Kliknij przycisk Edytuj…, a następnie przycisk Dodaj…. Wpisz Użytkownicy uwierzytelnieni w polu Wprowadź nazwy obiektów do wybrania., A następnie przycisk Dodaj . Wpisz Użytkownicy uwierzytelnieni w polu Wprowadź nazwy obiektów do wybrania.

  3. Kliknij OK i powinieneś zobaczyć Użytkownicy uwierzytelnieni jako jedną z nazw użytkowników. Nadaj odpowiednie uprawnienia w polu Uprawnienia dla uwierzytelnionych użytkowników w dolnej części, jeśli nie są jeszcze zaznaczone.

  4. Kliknij dwukrotnie przycisk OK, aby zamknąć okno dialogowe. Powinno zacząć obowiązywać natychmiast, ale jeśli chcesz mieć pewność, możesz ponownie uruchomić usługi IIS dla swojej aplikacji internetowej.

Odśwież przeglądarkę i powinna teraz wyświetlić stronę internetową.

Mam nadzieję że to pomoże!

Kent Aguilar
źródło
2

Musisz sprawdzić uprawnienia do folderów na swoim serwerze i sprawdzić, czy konto, którego używasz do uruchamiania aplikacji, ma dostęp do tego folderu.

Gaz Winter
źródło
0

Dla mnie dostęp anonimowego użytkownika był w porządku na poziomie serwera, ale różnił się tylko w jednym z moich „wirtualnych” folderów.

Zajęło mi to trochę załamania, a potem pomoc kolegi, aby dowiedzieć się, że IIS ma ustawienia „uwierzytelniania” również na poziomie folderu wirtualnego - mam nadzieję, że pomoże to komuś innemu w mojej kłopotliwej sytuacji.

user6096790
źródło
0

W naszym przypadku było to uwierzytelnianie zintegrowane z systemem Windows określone w pliku app web.config

ALE moduł uwierzytelniania systemu Windows nie został w ogóle zainstalowany na komputerze z usługami IIS.

Dodam tylko kolejny możliwy powód.

Alex
źródło
-4

Innym prostym rozwiązaniem, które znalazłem, było usunięcie lokalnej witryny IIS (z poziomu Menedżera IIS), a następnie ponowne utworzenie katalogu wirtualnego z „Właściwości” projektu sieci Web w programie Visual Studio.

KWondra
źródło