Platforma ASP.NET nie ma dostępu do katalogów usług IIS

W tym oficjalnym dokumencie opisano, co należy zrobić, jeśli żądanie do aplikacji ASP.NET zwróci błąd "Odmowa dostępu do katalogu DirectoryName . Nie można uruchomić monitorowania zmian katalogu.

Dotyczy ASP.NET 1.0 i ASP.NET 1.1.

ASP.NET V1 RTM działa teraz przy użyciu mniej uprzywilejowanego konta systemu Windows — zarejestrowanego jako konto "ASPNET" na komputerze lokalnym.

W niektórych zablokowanych systemach to konto może domyślnie nie mieć dostępu do odczytu zabezpieczeń do katalogów zawartości witryny sieci Web, katalogu głównego aplikacji lub katalogu głównego witryny sieci Web. W takim przypadku podczas żądania stron z danej aplikacji internetowej zostanie wyświetlony następujący błąd:

Zrzut ekranu przedstawiający widok przeglądarki strony błędu o nazwie Odmowa dostępu.

Aby rozwiązać ten problem, należy zmienić uprawnienia zabezpieczeń dla odpowiednich katalogów.

W szczególności ASP.NET wymaga dostępu do odczytu, wykonywania i wyświetlania listy dla konta ASPNET dla katalogu głównego witryny sieci Web (na przykład: c:\inetpub\wwwroot lub dowolnego alternatywnego katalogu witryn, który mógł zostać skonfigurowany w usługach IIS), katalogu zawartości i katalogu głównego aplikacji w celu monitorowania zmian w pliku konfiguracji. Katalog główny aplikacji odpowiada ścieżce folderu skojarzonej z katalogiem wirtualnym aplikacji w narzędziu administracyjnym usług IIS (inetmgr).

Rozważmy na przykład następującą hierarchię aplikacji w folderze wwwroot.

C:\inetpub\wwwroot\myapp\default.aspx

W tym przykładzie konto ASPNET wymaga uprawnień do odczytu zdefiniowanych powyżej dla zawartości w katalogu myapp i wwwroot. Pojedyncza dziedziczona lista ACL w folderze głównym może być również opcjonalnie używana dla obu katalogów, jeśli są one zagnieżdżone.

Aby dodać uprawnienia do katalogu, wykonaj następujące kroki:

  • Za pomocą Eksploratora Windows przejdź do katalogu
  • Kliknij prawym przyciskiem myszy folder katalogu i wybierz polecenie "Właściwości"
  • Przejdź do karty "Zabezpieczenia" w oknie dialogowym właściwości
  • Kliknij przycisk "Dodaj" i wprowadź nazwę maszyny, po której następuje nazwa konta ASPNET. Na przykład na maszynie o nazwie "webdev" wprowadź wartość webdev\ASPNET i naciśnij klawisz "OK".
  • Upewnij się, że na koncie ASPNET zaznaczono pola wyboru "Odczyt & Wykonaj", "Wyświetl zawartość folderu" i "Odczyt".
  • Naciśnij przycisk OK, aby zamknąć okno dialogowe i zapisać zmiany.

Zrzut ekranu przedstawiający okno dialogowe właściwości. Wybrano K.

W razie potrzeby te zmiany można zautomatyzować przy użyciu skryptów lub narzędzia "cacls.exe", które jest dostarczane z systemem Windows. Aby uzyskać więcej informacji na temat konta ASPNET, zobacz dokument Często zadawane pytania.

Jeśli dana aplikacja internetowa korzysta z uprawnień do zapisu lub modyfikowania określonego folderu lub pliku, można to przyznać, wykonując tę samą procedurę i zaznaczając pola wyboru "Zapis" i/lub "Modyfikuj".

Na maszynach, które zezwalają wszystkim lub grupie Użytkownicy na dostęp do odczytu do tych katalogów (co jest konfiguracją domyślną), nie zostaną napotkane żadne problemy, a powyższe kroki nie będą wymagane.