2012-04-21 15 views
8

Właśnie zainstalowałem IIS w systemie Windows XP.Dostęp do ścieżki "c: inetpub wwwroot myapp App_Data" jest zabroniony

Kiedy próbuję uruchomić aplikację, pojawia się błąd:

Access to the path 'c:\inetpub\wwwroot\myapp\App_Data' is denied. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.UnauthorizedAccessException: Access to the path 'c:\inetpub\wwwroot\myapp\App_Data' is denied.

ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via , the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.

To grant ASP.NET access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.

Source Error:

Line 70: Protected Sub cmbSettingFiles_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbSettingFiles.SelectedIndexChanged
Line 71: Dim doc As XmlDocument = New XmlDocument()
Line 72: doc.Load(Path.Combine(basePath, cmbSettingFiles.SelectedValue)) Line 74: Dim settingsNode As XmlNode = doc.SelectSingleNode("/settings")

Source File: C:\myapp\install\install.aspx.vb Line: 72

Próbowałem kraty zgodę w ten sposób:

To grant ASP.NET access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.

ale błąd nie ustąpi.

Czy to ma coś wspólnego z moim kodem?

Jak mogę rozwiązać ten problem?

EDIT

Mam rozwiązać problem na moim komputerze dev, ale ja wciąż otrzymuję błąd na moim serwerze.

Dzięki.

+0

Jestem jedynym użytkownikiem, który korzysta z pliku na moim komputerze, a kiedy ładuję mój serwer przez Internet, dzieje się to samo. – Smith

+0

Czy mogę zapytać, dlaczego głosowanie w dół? – Smith

Odpowiedz

8

Try to go to App_Data folder property and add ASPNET user with read and write privileges

Ref:
How to assign correct permissions to App_Data folder of WebMail Pro ASP.NET
Permissions on APP_DATA Folder
ASP/ASP.NET Best way to handle write permissions?

Jeśli to nie rozwiązuje problemu, a następnie sprawdzić, czy pliki XML nie są otwarte przez inny wątek za pomocą tych plików konfiguracyjnych .. i zapewnić pewne więcej szczegółów, jeśli nadal trwa.

+0

cześć, możesz mi pomóc spojrzeć na nowy błąd. Otrzymuję ten sam błąd na serwerze WWW – Smith

1

Czy jesteś pewien, że dodajesz właściwego użytkownika? Czy sprawdziłeś, który użytkownik jest ustawiony dla Twojej puli aplikacji aplikacji?

Ten błąd może również wystąpić, jeśli z jakiegoś powodu nie może odczytać pliku; taki jak plik jest zablokowany lub używany przez inną aplikację. Ponieważ jest to aplikacja internetowa ASP.NET, musisz upewnić się, że nie wykonujesz żadnych czynności, które wymagałyby zablokowania pliku; chyba że możesz zagwarantować, że będziesz mieć tylko jednego użytkownika na swojej stronie naraz.

Czy możesz podać przykład dostępu do pliku? Jakiego rodzaju jest to plik? Fragmenty kodu pomogą uzyskać dokładniejszą odpowiedź.

4

Zastanów się, czy plik jest tylko do odczytu, a następnie dodatkowe parametry mogą pomóc FileStream

using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read)) 
1

miałem podobną sytuację. Używam TFS do kontroli kodu źródłowego. To, co odkryłem, to fakt, że po jej przejściu pliki były tylko do odczytu. Spowodowało to powyższy błąd w mojej usłudze, w której otwierał je odczyt/zapis. Kiedyś sprawdziłem je do edycji. Wszystko działało świetnie. Zastanawiam się, próbując otworzyć je tylko do odczytu w serwisie. Myślę, że po ich opublikowaniu na serwerze produkcyjnym nie stanowi to problemu. Tylko w środowisku programistycznym. Widziałem podobne problemy z usługami, które korzystają z Entity Framework. Jeśli plik .svc jest zaznaczony, nie można aktualizować bazy danych przez EF.

+1

Kolejny powód, dla którego wielu nie korzysta z TFS ... –

0

Spróbuj uzyskać pozwolenie dla użytkownika usługi NETWORK SERVICE.

1

Próbowałem dodać ASP.net v4.0 z wszystkimi uprawnieniami, dodać użytkownika usługi NETWORK, ale nic nie pomogło. Wreszcie dodano MODIFY prawo użytkownika DefaultAppPool w folderze App_Data, problem został rozwiązany.

+0

To działało również dla mnie. Nowy serwer i mój pakiet wdrażania nawet nie utworzył folderu app_data. Stworzyłem go, a następnie dodałem uprawnienia do modyfikacji do DefaultAppPool – Luke

0

Uruchom Visual Studio z administratorem privilege..This problem jest rozwiązany dla mnie ..

Dostęp do drogi jest zabroniony C: \ inetpub \ wwwroot odmawia wskazuje, że strona internetowa może Self Service uzyskać dostęp do określonego folderu na serwerze, na którym jest zainstalowany. Może to być spowodowane tym, że lokalizacja nie istnieje, lub ponieważ użytkownik uwierzytelniający nie ma żadnych uprawnień zastosowanych do zapisu w tej lokalizacji.

0

Innym powodem może być to, że ścieżka do pliku jest pusta w miejscu, w którym próbujesz napisać, dlatego nie może go znaleźć. kolejny powód tego błędu.

2

Dla tych z systemem IIS w systemie Windows Server:

Domyślnie użytkownik IIS nie ma uprawnień do zapisu w folderze wwwroot. Można to rozwiązać, przyznając pełne uprawnienia użytkownikowi IIS_IUSRS dla wwwroot.

  1. Otwórz Eksplorator plików i przejdź do C:/inetpub/
  2. prawym przyciskiem myszy na wwwroot i kliknij „Właściwości”
  3. przejdź do zakładki Zabezpieczenia i kliknij „Edytuj ...”, aby edytować uprawnienia
  4. Znajdź i wybierz użytkownika IIS. W moim przypadku nazwa ta brzmiała: IIS_IUSRS ([server name]\IIS_IUSRS).
  5. Zaznacz pole wyboru "Zezwalaj" dla wszystkich uprawnień.
Powiązane problemy