Kann nicht auf eine Datei zugreifen

8

Ich habe ein neues Projekt geerbt. Die Website (MVC.NET) referenziert einen Dateispeicherort auf dem Windows 2012-Server (scheint hart codiert zu sein), befindet sich jedoch nicht im selben Verzeichnis wie die Website.

Ein Teil des Codes kopiert eine Datei von einem Ort zu einem anderen mit File.Copy, aber dies verursacht eine Ausnahme.

Anscheinend hat es gestern funktioniert und heute ist es nicht. Die Website ist nicht erreichbar und ich suche nach einer Lösung.

Die Fehlermeldung vom Browser ist

  

Der Zugriff auf den Pfad 'C: \ Websites \ Website \ Content \ Images \ Uploads \ Certificate 1.jpg' wird verweigert.

     

Beschreibung: Bei der Ausführung der aktuellen Webanforderung ist eine nicht behandelte Ausnahme aufgetreten. Bitte überprüfen Sie die Stack-Trace für weitere Informationen über den Fehler und wo es aus dem Code stammt.

     

Ausnahmedetails: System.UnauthorizedAccessException: Der Zugriff auf den Pfad 'C: \ Websites \ Website \ Content \ Images \ Uploads \ Certificate 1.jpg' wird verweigert.

     

ASP.NET ist nicht berechtigt, auf die angeforderte Ressource zuzugreifen. Berücksichtigen Sie das Gewähren von Zugriffsrechten für die Ressource auf die ASP.NET-Anforderungsidentität. ASP.NET verfügt über eine Basisprozessidentität (in der Regel {MASCHINE} \ ASPNET auf IIS 5 oder Netzwerkdienst auf IIS 6 und IIS 7 und die konfigurierte Anwendungspoolidentität auf IIS 7.5), die verwendet wird, wenn die Anwendung keine Identität annimmt. Wenn die Anwendung die Identität annimmt, ist die Identität der anonyme Benutzer (normalerweise IUSR_MACHINENAME) oder der authentifizierte Anforderungsbenutzer.

     

Um ASP.NET Zugriff auf eine Datei zu gewähren, klicken Sie mit der rechten Maustaste auf die Datei im Datei-Explorer, wählen Sie "Eigenschaften" und wählen Sie die Registerkarte Sicherheit. Klicken Sie auf "Hinzufügen", um den entsprechenden Benutzer oder die Gruppe hinzuzufügen. Markieren Sie das ASP.NET-Konto und aktivieren Sie die Kontrollkästchen für den gewünschten Zugriff.

Der einfachste Weg, um dies zu beheben (als vorübergehende Lösung, nur um die Website zum Laufen zu bringen) Ich dachte, es sollte volle Berechtigungen für diesen Ordner geben, das heißt Everyone mit voller Berechtigung hinzufügen. Es hat nicht funktioniert. Ich bin nicht neugierig, warum.

Ich bin mir der Risiken bewusst, die das hat, aber meine Frage ist warum das nicht funktioniert. Warum sehe ich immer noch dieselbe Fehlermeldung?

Ich kann RDP in den Server und auf die Datei ohne Problem zugreifen. Daher glaube ich nicht, dass dies ein Serverproblem (für ServerFault oder SuperUser) ist.

Ich vermute, dass es in .NET eine Schutzfunktion ist. Auf die gleiche Weise (wenn ich mich recht erinnere) mussten wir spezielle Berechtigungen in IIS setzen, um übergeordnete Pfade in ASP zu erlauben.

Was muss ich tun?

Bearbeiten

Ich habe die Website auf einen anderen Server hochgeladen und das gleiche Problem besteht weiterhin, was darauf hindeutet, dass der Fehler nichts mit dem Computer zu tun hat, sondern eher mit .NET oder IIS.

IIS ist für die Verwendung von Integrated Managed Pipe (nicht klassisch) eingestellt, und ich habe versucht, Berechtigungen für NETWORK SERVICE und IUSR hinzuzufügen.

    
MyDaftQuestions 11.05.2017, 16:42
quelle

2 Antworten

4

Die Lösung war seltsam ... Ich verstehe nicht warum / wie, aber ich verstehe was. Ich habe keine Ahnung, ob das anderen helfen wird, aber ich habe die Antwort trotzdem gepostet.

Die Anwendung ermöglicht das Hochladen von Bildern, die in

gespeichert sind %Vor%

Wenn die Website geladen wird, kopiert sie die Dateien von C: \ someUploads in den Websitepfad, wie im ursprünglichen Post angezeigt.

Hier trat das Problem auf. Ich entfernte alle Bilder im Website-Pfad (wie im ursprünglichen Beitrag gezeigt) und startete die Website neu und es funktionierte einfach und kopierte alle Dateien wie erwartet. Ich habe die Website geschlossen, den IIS und den App-Pool neu gestartet (Recycling) und es funktioniert immer noch.

    
MyDaftQuestions 17.05.2017, 14:40
quelle
1

Überprüfen Sie, ob der Ordner in Web.config existiert und

enthält %Vor%

und überprüfen Sie den Ordnerpfad des IIS Server-Verzeichnisses.

    
jeremylee 23.05.2017 09:07
quelle

Tags und Links