wake-up-neo.com

ASP.net Abrufen des Fehlers "Zugriff auf den Pfad wird verweigert." beim Versuch, Dateien auf meinen Windows Server 2008 R2-Webserver hochzuladen

Ich habe eine asp.net-Webapplikation, die Dateien in einen bestimmten Ordner auf dem Webserver hochlädt. lokal funktioniert alles einwandfrei, aber wenn ich die Anwendung auf dem Webserver bereitstelle, erhalte ich die Fehlermeldung "Zugriff auf den Pfad" D:\Attachments\myfile.doc "wird verweigert". Ich gab dem Benutzer "IIS AppPool" an, dass die Anwendung unter voller Berechtigung für den Ordner ausgeführt wird. Ich habe sogar "Everyone" alle Berechtigungen erteilt, jedoch mit dem gleichen Fehler.

Ich habe den Ordner der Ausnahmenliste des Antivirus hinzugefügt, jedoch mit dem gleichen Ergebnis. Ich habe den Verdacht, dass Windows Server 2008 R2 möglicherweise einen Trick benötigt, damit mein Upload funktioniert. Ich schätze deine Hilfe sehr.

Vielen Dank 

45
Hassan Mokdad

Ihr asp.net-Konto {MACHINE}\ASPNET hat keinen Schreibzugriff auf diesen Speicherort. Das ist der Grund, warum es versagt.

Erwägen Sie, der Ressource ASP.NET-Anforderung Zugriffsberechtigungen für die Ressource zu gewähren. 

Klicken Sie mit der rechten Maustaste auf den Ordner Properties > Security Tab > Edit > Add > locations > choose your local machine > click OK > Type ASPNET below "Enter the object name to select" > Click Check Names.__, und klicken Sie auf die Kontrollkästchen für den gewünschten Zugriff (Full Control). Wenn es für Sie nicht funktioniert, machen Sie dasselbe mit Network Service

Jetzt sollte Ihr lokaler {MACHINENAME}\ASPNET-Account angezeigt werden. Dann legen Sie die Schreibberechtigung für diesen Account fest.

Andernfalls, wenn die Anwendung sich über <identity impersonate="true"/> imitiert, ist die Identität der anonyme Benutzer (normalerweise IUSR_MACHINENAME) oder der authentifizierte Anforderungsbenutzer. 


Oder verwenden Sie einfach einen dedizierten Speicherort zum Speichern von Dateien in ASP.NET (App_Data). Zum Erstellen klicken Sie mit der rechten Maustaste auf Ihr ASP.NET-Projekt (in Visual Studio) Add > Add ASP.NET Folder > App_Data. Dann können Sie Daten an diesem Ort speichern:

var path = Server.MapPath("~/App_Data/file.txt");
System.IO.File.WriteAllText(path, "Hello World");
45
Damian Drygiel

Klicken Sie mit der rechten Maustaste auf Ihren Ordner auf Ihrem Server oder auf Ihrem lokalen Computer und erteilen Sie ihm die vollständigen Berechtigungen 

IIS_IUSRS

das ist es.

64
UMAR

das Problem könnte sein, dass der Netzwerkdienst keine Leserechte hat

salution:

klicken Sie mit der rechten Maustaste auf den Upload-Ordner -> Popertys -> Sicherheit -> Bearbeiten -> Hinzufügen -> Typ: NETWORK SERVICE -> Kontrollkästchen Vollzugriff Zulassen -> Klicken Sie auf OK oder Übernehmen

11

Wenn jemand darüber stolpert, da es das erste Ergebnis bei Google ist,

denken Sie daran, auch den Dateinamen in der SaveAs-Methode anzugeben.

Funktioniert nicht

file_upload.PostedFile.SaveAs(Server.MapPath(SaveLocation));

Du brauchst das:

filename = Path.GetFileName(file_upload.PostedFile.FileName);
file_upload.PostedFile.SaveAs(Server.MapPath(SaveLocation + "\\" + filename));

Ich gehe davon aus, dass die SaveAs-Methode automatisch den hochgeladenen Dateinamen verwendet Nur "Zugriff verweigert" -Fehler erhalten. Nicht sehr beschreibend für das eigentliche Problem

1
Shaakir

Ich war einmal mit diesem Problem konfrontiert und in meinem Fall ist die Lösung, um jeden Prozess im Task-Manager zu schließen, der/die Datei verwendet .

1
user6243946

Ich weiß, dass dies zu spät ist, aber ich wollte es teilen, falls es jemandem hilft. 

Ihre genaue Situation trifft möglicherweise nicht zu, jedoch hatte ich eine ähnliche Situation, und das Einstellen des Dateiattributs half.

Versuchen Sie, das File-Attribut auf Normal zu setzen:

var path = Server.MapPath("~/App_Data/file.txt");
File.SetAttributes(path, FileAttributes.Normal);
System.IO.File.WriteAllText(path, "Hello World");

Ich hoffe das hilft jemandem.

0

Haben Sie unter Erweiterte Sicherheitseinstellungen nachgesehen?

etwas wie unter Bildänderungsberechtigungen von Ordner zu IIS_IUSRS

 enter image description here

0
Adhik