it-swarm.com.de

Zugriff auf den Pfad wird verweigert

Ich weiß, dass diese Frage hier oft gestellt wurde, aber ich kann keine Lösung für mein Problem finden ... Ich versuche, das Bild im Ordner in .net c # zu speichern, erhalte jedoch diese Ausnahme:

Access to the path 'C:\inetpub\wwwroot\mysite\images\savehere' is denied.The error occured at mscorlib because    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode)

Ich gab diesem Ordner (savehere) volle Kontrolle über network service und iis_iusrs, gab sogar everyone die vollständige Kontrolle, erhielt aber immer noch diese Ausnahme .. _. Ich versuchte, den Zugriff über den Explorer und über IIS manager, immer noch nicht Glück

Ich mache das auf Windows Server 2008 R2 und IIS 7.5. Wem muss ich Zugriff gewähren? 

Vielen Dank

136
Burjua

Sie müssen aus dem Anwendungspool für die Website herausfinden, unter welcher Identität sie ausgeführt wird (standardmäßig ist dies Application Pool Identity), und die richtigen Berechtigungen erteilen.

84
Oded

Der Zugriff auf den Pfad 'C:\inetpub\wwwroot\mysite\images\savehere' wird verweigert

Lesen Sie die Nachricht sorgfältig. Sie versuchen, in einer Datei zu speichern, die denselben Namen wie das Verzeichnis hat. Das kann nicht funktionieren, Sie können ein mit Dateien gefülltes Verzeichnis nicht mit einer einzigen neuen Datei überschreiben. Dies würde zu einem nicht erkennbaren Datenverlust führen. "Zugriff auf den Pfad wird verweigert" ist das Dateisystem, das sich wehrt, um dies zu verhindern. 

Die Ausnahmebotschaft ist nicht ideal, aber sie kommt direkt vom Betriebssystem und sie sind in Stein gegossen. Das Framework fügt häufig zusätzliche Prüfungen hinzu, um bessere Nachrichten zu generieren. Dies ist jedoch ein kostspieliger Test in einem Netzwerk. Perf ist auch eine Funktion. 

Sie müssen einen Namen wie 'C:\inetpub\wwwroot\mysite\images\savehere\mumble.jpg' verwenden. Berücksichtigen Sie Path.Combine () , um den Pfadnamen zuverlässig zu generieren.

187
Hans Passant

Ich hatte das gleiche Problem, als ich versuchte, eine Datei auf dem Server zu erstellen (eigentlich eine Datei, die eine Kopie einer Vorlage ist).

Hier ist die vollständige Fehlermeldung:

{ERROR} 08/07/2012 22:15:58 - System.UnauthorizedAccessException: Access to the path 'C:\inetpub\wwwroot\SAvE\Templates\Cover.pdf' is denied.

Ich habe einen neuen Ordner namens Templates im App-Ordner IIS hinzugefügt. Eine sehr wichtige Sache in meinem Fall ist, dass ich die Schreibberechtigung (Gravar) für den IUSR-Benutzer für diesen Ordner erteilen musste. Möglicherweise müssen Sie auch Network Service und ASP.NET v$.# dieselbe Schreibberechtigung erteilen.

enter image description here

Danach funktioniert alles wie erwartet.

19

Ich hatte genau das gleiche Problem.

Die Lösung war, dass die Datei, auf die ich zugreifen wollte, readonly war, da sie aus einer schreibgeschützten Vorlagendatei kopiert wurde.

<facepalm />

11
Ruskin

Ich habe dieses Problem, wenn ich versuche, die Datei zu speichern, ohne den Dateinamen festzulegen.

Alter Code

File.WriteAllBytes(@"E:\Folder", Convert.FromBase64String(Base64String));

Arbeitsordnung

File.WriteAllBytes(@"E:\Folder\"+ fileName, Convert.FromBase64String(Base64String));
7
MarceloBarbosa

Mein Problem war, dass ich nur nach Lesezugriff fragen musste:

FileStream fs = new FileStream(name, FileMode.Open, FileAccess.Read);
5
jesal

bitte fügen Sie Ihrem Ordner IIS_IUSERS-Vollzugriffsberechtigung hinzu. Diese Option finden Sie auf der Registerkarte "Sicherheit" in den Ordnereigenschaften . find this option and user in this image

5
Ali Rasouli

Der folgende Tipp ist nicht eine Antwort auf die ursprüngliche Frage dieses Threads, kann jedoch einigen Benutzern helfen, die auf dieser Webseite landen, nachdem sie den gleichen dummen Fehler gemacht haben, den ich gerade gemacht habe ...

Ich habe versucht, ein ASP.Net FileUpload-Steuerelement zu erhalten, um seine Datei an eine Netzwerkadresse hochzuladen, die ein "versteckte Freigabe" enthielt, nämlich:

\ MyNetworkServer\c $\SomeDirectoryOrOther

Ich habe es nicht verstanden. Wenn ich die Webseite im Debug-Modus in Visual Studio ausgeführt habe, funktioniert das einwandfrei. Als das Projekt jedoch bereitgestellt wurde und über einen Anwendungspoolbenutzer ausgeführt wurde, lehnte es dieses Netzwerkverzeichnis ab.

Ich hatte überprüft, unter welchem ​​Benutzer meine IIS - Site ausgeführt wurde. Er hatte diesem Benutzer die vollständigen Berechtigungen für dieses Verzeichnis auf dem Server "MyNetworkServer" usw. erteilt.

Der Grund (natürlich!) Ist, dass nur Administratoren diese versteckten Laufwerksfreigaben "sehen" können. 

Meine Lösung bestand einfach darin, eine "normale" Freigabe zu erstellen

\ MyNetworkServer\SomeDirectoryOrOther

und damit wurde der Fehler "Zugriff auf den Pfad ... wird verweigert" entfernt. Der FileUpload konnte den Befehl erfolgreich ausführen

fileUpload.SaveAs(networkFilename);

Ich hoffe, das hilft einigen anderen Benutzern, die den gleichen Fehler machen wie ich!

Wenn Sie große Dateien (über 4 MB) hochladen, müssen Sie bei IIS7 die Datei web.config in two ändern. Klicken Sie auf diesen Link, um zu erfahren, was Sie tun müssen: Hochladen großer Dateien in ASP.Net

4
Mike Gledhill

Ich habe mit dieser Einstellung gelöst:

IIS> Anwendungspools> [Ihre Site]> Erweiterte Einstellungen ...> Identität> Integriertes Accound> LocalSystem

Welche Identität ist Ihr Anwendungspool für die ausgeführte Webanwendung? Versuchen Sie zur Problembehandlung, einen neuen Anwendungspool mit beispielsweise Netzwerkdienst als Identität zu erstellen, und Ihre Webanwendung den von Ihnen erstellten neuen Anwendungspool verwenden zu lassen. Überprüfen Sie, ob der Fehler weiterhin besteht. 

4
kd7
  1. Ändern Sie die Einstellung von einem integrierten Konto in ein benutzerdefiniertes Konto und geben Sie den Benutzernamen und das Kennwort des anderen Servers ein.

  2. Behalten Sie die Einstellung als integriert (anstelle des klassischen Modus).

2
uday

Mein Problem war so etwas:

FileStream ms = new FileStream(path, FileMode.Open, FileAccess.ReadWrite);

anstelle von path sollte ich File.FullName ....__ verwenden. Ich weiß nicht, ob es jemandem helfen wird.

2
Tarcísio Luna

Vielleicht hilft es dir.

string tempDirectoryPath = @"C:\Users\HOPE\Desktop\Test Folder";
string zipFilePath = @"C:\Users\HOPE\Desktop\7za920.Zip";
Directory.CreateDirectory(tempDirectoryPath);
ZipFile.ExtractToDirectory(zipFilePath, tempDirectoryPath);
1
umutcakar

Hatte ein Verzeichnis mit demselben Namen wie die Datei, die ich schreiben wollte, damit die Leute auch darauf achten können.

0
Samuel

Ich hatte das gleiche Problem, aber ich habe es behoben, indem ich die Datei an einem anderen Speicherort abgelegt und dann die Datei kopiert und an der Stelle eingefügt habe, an der ich sie haben wollte. Ich habe die Option verwendet, um die vorhandene Datei zu ersetzen, und das hat mir geholfen. Ich weiß, dass dies nicht der effizienteste Weg ist, aber es funktioniert und dauert weniger als 15 Sekunden.

0
Nde Samuel Mbah

Dieses Problem ist bei der Entwicklung auf meiner lokalen Workstation aufgetreten.

Nach mehreren erfolglosen iisreset-Aufrufen habe ich diese Situation behoben, indem ich rebooting my machine.

Im Nachhinein kann ein offener Dateihandle Probleme verursachen.

0
Jim G.

In meinem Fall musste ich eine .NET-Autorisierungsregel für die Website in IIS hinzufügen.

Ich habe eine Regel hinzugefügt, um anonyme Benutzer zuzulassen.

 .NET Authorization Rules

0
GerardBeckerleg

Legen Sie das Verzeichnis savehere als virtuelles Verzeichnis fest und erteilen Sie die Berechtigung zum Lesen/Schreiben über die Systemsteuerung

0
Harsh Baid