Niedawno napotkałem błąd podczas próby hostowania mojej witryny asp.net za pomocą IIS. Znalazłem rozwiązanie, które wielu przysięga.
Rozwiązanie:
- Dodaj IIS_IUSRS z uprawnieniami do odczytu plików w folderze
- Zmień metodę uwierzytelniania IIS na BasicAuthentication
- odśwież stronę. To będzie działać
( http://vivekthangaswamy.blogspot.com/2009/07/aspnet-website-cannot-read.html )
Co jednak dodać do mojego pliku web.config? Nigdy wcześniej nie musiałem go edytować. Oto jego obecna zawartość:
<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
</system.web>
</configuration>
Mój błąd to:
Błąd konfiguracji: Nie można odczytać pliku konfiguracyjnego z powodu niewystarczających uprawnień
Plik konfiguracyjny : \? \ C: \ Users ***** \ Documents \ Visual Studio2010 \ WebSites \ PointsForTime \ web.config
asp.net
iis-7
file-permissions
Freesnöw
źródło
źródło
Odpowiedzi:
Nie ma problemu z twoim web.config . Twoja strona internetowa działa w trakcie procesu. W iis możesz zdefiniować tożsamość tego procesu. tożsamość , że strona internetowa jest basen aplikacja działa jako ( usługi sieciowe, System lokalny , itd.), Należy mieć uprawnienia do dostępu i odczytu pliku web.config.
Aktualizacja:
Ta zaktualizowana odpowiedź jest taka sama jak powyżej, ale jest nieco dłuższa, prostsza i ulepszona.
Po pierwsze : nie musisz nic zmieniać w pliku konfiguracyjnym. Jest OK . Problem dotyczy uprawnień do plików systemu Windows .
Ten problem występuje, ponieważ aplikacja nie może uzyskać dostępu do pliku web.config i czytać go pliku go.
Udostępnij plik grupie IIS_IUSRS . Wystarczy kliknąć prawym przyciskiem myszy web.config i kliknij Właściwości , w obszarze bezpieczeństwa zakładce dodać IIS_IUSRS .
Więc co to za IIS_IUSRS?
Twoja strona internetowa jest jak plik exe . Podobnie jak każdy plik exe, powinien on zostać uruchomiony przez użytkownika i działa zgodnie z uprawnieniami przypisanymi temu użytkownikowi.
Jeśli witryna jest uruchomiona w IIS , Application Pool witryny internetowej jest związane z użytkownikiem ( usług sieciowych, System lokalny , itd ...) (i mogą być zmieniane w IIS)
Kiedy więc powiesz IIS_IUSRS , oznacza to każdego użytkownika ( usługi sieciowe, system lokalny , itp.), Z którego korzysta Twoja witryna.
I jak wspomniano w komentarzu @Seph : Jeśli twój komputer jest w domenie , pamiętaj, że grupa IIS_IUSRS jest grupą lokalną . Upewnij się także, że gdy próbujesz znaleźć tego użytkownika, sprawdź lokalizację, która powinna być ustawiona na komputer lokalny, a nie na domenę firmową.
źródło
IIS_IUSRS
i aby upewnić się, że gdy próbujesz znaleźć tego użytkownika, sprawdź lokalizację, która powinna być ustawiona na komputer lokalny, a nie domenę korporacyjną.Miałem coś, co wydawało się być tym samym problemem dotyczącym uprawnień do
web.config
pliku.Jednak mój problem został spowodowany przez to, że IIS nie załadował pliku konfiguracyjnego, ponieważ zawierał on reguły przepisywania adresów URL i nie zainstalowałem modułu przepisywania adresów URL IIS na nowym serwerze.
Rozwiązanie: zainstaluj moduł przepisywania.
Mam nadzieję, że ktoś oszczędzi kilka godzin.
źródło
error:
:) +1 Zamiast wymagać SSL, przepisałem adres URL do HTTPS, ponieważ ktoś łączyłby się bez https. Co za zagadka.Zmiana tożsamości z ApplicationPoolIdentity na LocalSystem ;).
Używam Win7 64 z IIS 7.5
więcej o tożsamości puli aplikacji w IIS 7.5 i wygraj 7
źródło
Miałem ten sam problem, gdy próbowałem udostępnić folder główny witryny innemu użytkownikowi. Niektóre foldery straciły uprawnienia. Postępowałem zgodnie z instrukcjami, aby dodać uprawnienia do grupy IIS_IUSRS , jak sugerował Afshin Gh. Problem polega na tym, że ta grupa nie była dla mnie dostępna. Korzystam z systemu Windows 7.
Co zrobiłem, właśnie zmieniłem kilka kroków:
To działało dla mnie.
źródło
C:\
np.C:\Dev
LubC:\Code
itd. Grupa bezpieczeństwaAuthenticated Users
jest przyznawana wC:\
folderach potomnych i propagowana do nich. Jednak wC:\Users
folderze propagacja zostaje zatrzymana. Więc deweloperzy tacy jak ja, którzy przechowują swój kod w folderze domowym, muszą przyznać dostępAuthenticated Users
do tych folderów głównych IIS, aby mogły one działać.Nie musisz nic zmieniać w swoim pliku web.config.
Problemem są uprawnienia systemu plików. Twoje uprawnienia do plików nie zezwalają użytkownikowi IIS_IUSRS na dostęp do pliku web.config (lub prawdopodobnie dowolnego z plików). Zmień uprawnienia do plików w systemie Windows, aby umożliwić dostęp do konta IIS_IUSRS.
źródło
Udostępnij plik grupie IIS_IUSRS . Kliknij prawym przyciskiem myszy plik web.config, rozwiń właściwości i na karcie zabezpieczeń dodaj IIS_IUSRS. Daj grupie dostęp do odczytu / zapisu.
Gdy grupa NIE jest dostępna, zastąp IIS_IUSRS nazwą komputera \ IIS_IUSRS
źródło
Przejdź do folderu nadrzędnego, kliknij prawym przyciskiem myszy i wybierz Właściwości . Wybierz kartę Zabezpieczenia , edytuj uprawnienia i Dodaj . Kliknij Zaawansowane i Znajdź teraz . Wybierz IIS_IUSRS, kliknij OK i ponownie OK . Upewnij się, że masz zaznaczone Napisz . Kliknij OK i OK ponownie .
Zadanie wykonane!
źródło
Po udzieleniu uprawnień IIS_IUSRS należy sprawdzić, czy w sekcji IIS / Uwierzytelnianie aplikacji sieci Web anonimowe poświadczenia uwierzytelnienia używają tożsamości puli aplikacji, a nie IUSR.
źródło
Z jakiegoś powodu twój plik web.config jest ustawiony jako tylko do odczytu. Odznacz opcję tylko do odczytu pliku web.config.
źródło
Musiałem dodać uprawnienia do IUSR (oprócz ISS-IUSRS, jak sugerowali inni). (Zobacz także: http://codeasp.net/blogs/raghav_khunger/microsoft-net/2099/iis-7-5-windows-7-http-error-401-3-unauthorized )
źródło
Użyłem subst, aby utworzyć mapowanie z D: na C: w celu zachowania tej samej konfiguracji, co inni programiści w zespole. Dało mi to również takie same błędy, jak opisano. Usunięcie tego naprawiło to dla mnie.
źródło
Przyjęte rozwiązanie nie dla mnie. Korzystam z repozytorium Git i zostało ono sklonowane do następującego folderu
Zrobiłem nową stronę internetową IIS i wskazałem ją na ścieżkę. Który nie miał uprawnień iis_iusrs sugerowanych w zaakceptowanym rozwiązaniu. Kiedy dodałem uprawnienia, nadal nie działało.
Zaczęło działać dopiero, gdy dałem następujące uprawnienia grupie „Użytkownicy”, a dziedziczenie kaskadowo uprawnienia do pliku web.config. Prawdopodobnie powinien był zastosować go tylko do pliku web.config, aby zmniejszyć obszar ataku.
źródło
Mieliśmy witrynę z określoną tożsamością w aplikacji, tylko po udzieleniu temu użytkownikowi dostępu do odczytu folderu zawierającego plik web.config, czy to zadziałałoby. Wyśledziliśmy to po dodaniu użytkownika „wszyscy” z czytaniem i wszystko działało dobrze.
źródło
Dla mnie błąd pojawił się podczas debugowania na moim komputerze lokalnym i okazał się związany z podstawowym web.config, który jest inicjowany przez .NET Framework podczas kompilacji strony. Mój plik C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config miał nierozpoznany element (folderLevelBuildProviders). Naprawienie tego błędu naprawiło błąd 500.19.
Zobacz: Menedżer usług IIS nie może skonfigurować kompilacji .NET w aplikacjach .NET 4
źródło
Zmiana tożsamości modelu procesu na LocalSystem naprawiła dla mnie ten problem. Możesz znaleźć to ustawienie, klikając prawym przyciskiem myszy pulę aplikacji i wybierając „Ustawienia zaawansowane”. Korzystam z IIS 7.5.
źródło
Kliknij prawym przyciskiem Web.Config => Zabezpieczenia karty => Edycja przycisku => Dodaj przycisk => Przycisk Zaawansowane => Przycisk Znajdź teraz => W wynikach wyszukiwania wybierz swoją grupę (w naszym przypadku „IIS_IUSRS”) => Ok => Ok => Ok
źródło
Stało się tak, gdy aplikacja IIS ma katalog wirtualny z fizyczną ścieżką, który zawiera ukośniki /zamiast ukośników odwrotnych \. Zostało to przypadkowo wykonane przy użyciu interfejsu API zarządzania PowerShell dla IIS podczas naszego ciągłego dostarczania.
Przykład złej konfiguracji -
applicationHost.config
Upewnij się, że
physicalPath
atrybut nie zawiera ukośników /, tylko ukośniki odwrotne\Poprawiony przykład konfiguracji -
applicationHost.config
źródło
C:\inetpub\MySite\\MyService
. Zmiana na pojedynczy ukośnik zadziałałaRozwiązałem ten problem, dodając uprawnienia do odczytu dla folderu użytkownika puli aplikacji (WIN SERVER 2008 R2): C: \ Windows \ System32 \ inetsrv \ config
Trochę tła: nasz serwer został zhakowany przy użyciu klasycznego błędu, w którym użytkownik aplikacji miał więcej uprawnień, niż powinien (lokalny administrator).
Aby to naprawić, stworzyliśmy nowego użytkownika domeny, który miał tylko uprawnienia do folderu aplikacji, z minimalnymi potrzebnymi uprawnieniami i przypisaliśmy go jako użytkownika puli aplikacji. niż trafiliśmy w ten problem i było to rozwiązanie naszych problemów.
źródło
Przenieś swój projekt na inny dysk niż C: pracował dla mnie z tym samym błędem.
źródło
Może się to zdarzyć, jeśli aplikacja znajduje się w katalogu wirtualnym, a ścieżka do plików to dysk zamapowany.
Jeśli zmienisz ścieżkę do plików na dysk lokalny, rozwiąże to problem, jeśli to rzeczywiście jest twój problem.
źródło
Wszystkie udzielone odpowiedzi są prawidłowe i działają w różnych okolicznościach.
Dla mnie zadziałało ponowne uruchomienie Visual Studio.
źródło
Powyższe odpowiedzi były pomocne, ale na wypadek, gdyby to pomogło każdemu - miałem dokładnie ten problem i okazało się, że (Windows Networking) dzielę folder główny, z którego hostowana jest strona. Zabiliśmy ten udział i dodaliśmy uprawnienia użytkowników do odczytu / wykonania, które znów zadziałało.
Podejrzewam, że udział zawiódł to.
źródło
Otrzymałem również „Nie można odczytać pliku konfiguracyjnego z powodu niewystarczających uprawnień”. Okazuje się, że ograniczenia ISAPI i CGI w IIS dla ASP.NET 4.0 32-bitowego i 64-bitowego zostały ustawione jako odmowa. Oznaczenie ich obu jako Dozwolone rozwiązało mój problem.
źródło
Wystąpił ten problem z aplikacją wirtualną. Wszystkie uprawnienia zostały ustawione. IIS_IUSRS, AppPoolIdentity, a następnie dał pełny dostęp wszystkim. Nic nie działało. Zrestartowałem aplikację, witrynę i IIS, ale nie można.
Usunąłem aplikację wirtualną i dodałem ją od zera, a ona zaczęła działać.
Chciałbym wiedzieć, co to rozwiązało.
źródło
sprawdź, czy plik nie jest oznaczony jako tylko do odczytu , pomimo uprawnienia IIS_IUSRS wyświetli ten sam komunikat.
źródło
Miałem ten komunikat o błędzie, który okazał się być spowodowany tym, że mój fizyczny folder znajduje się na dysku sieciowym, a nie na dysku lokalnym. Wygląda na to, że uprawnienia na takich dyskach domyślnie mogą się różnić. Na przykład, podczas gdy lokalna lokalizacja dysku dała uprawnienia użytkownikom komputera lokalnego, lokalizacja sieciowa nie.
Ponadto przyjęta odpowiedź nie działa w takim przypadku. Użytkownicy lokalni lub IIS nie byli dostępni do przypisywania uprawnień. Rozwiązaniem było przeniesienie folderu fizycznego na dysk lokalny.
źródło
Miałem ten sam problem i po zrobieniu wszystkich rzeczy zapisanych tutaj jako odpowiedzi, nadal się powielał. Druga połowa problemu polegała na tym, że platforma .NET została wyłączona w sekcji „Włączanie i wyłączanie funkcji systemu Windows”
źródło
Czasami, jeśli jest to nowy serwer, musisz skonfigurować lub zainstalować funkcję ASP.NET w IIS, aby móc odczytać plik web.config.
W moim przypadku był to powód.
źródło
W moim przypadku próbowałem hostować strony z zamapowanego dysku (subst). Problem polega na tym, że podstart został uruchomiony na moim koncie, a użytkownik IIS nie widzi tego samego dysku
źródło
Dałem zgodę i użyłem ICACLS.exe, ale nie działałem. Potem zmieniłem fizyczną ścieżkę i zadziałała pomyślnie.
(IIS 8.5 Windows 2012 R2)
źródło