Ich habe ein Problem, bei dem ich versuche, meine Datei zu löschen, aber ich erhalte eine Ausnahme.
if (result == "Success")
{
if (FileUpload.HasFile)
{
try
{
File.Delete(Request.PhysicalApplicationPath + app_settings.login_images + txtUploadStatus.Text);
string filename = Path.GetFileName(btnFileUpload.FileName);
btnFileUpload.SaveAs(Request.PhysicalApplicationPath + app_settings.login_images + filename);
}
catch (Exception ex)
{
Message(ex.ToString());
}
}
}
Außerdem sollte ich beachten, dass der Ordner, aus dem ich löschen möchte, die volle Kontrolle über die Netzwerkdienste hat.
Die vollständige Ausnahmemeldung lautet:
System.UnauthorizedAccessException: Der Zugriff auf den Pfad "C: \ Benutzer \ gowdyn \ Dokumente \ Visual Studio 2008 \ Projekte \ hybrid \ hybrid \ temp_loginimages \ enviromental.jpg" wird verweigert. at System.IO .__ Error.WinIOError (Int32 errorCode, String MaybeFullPath) at System.IO.File.Delete (String path) at hybrid.User_Controls.Imgloader_Add_Edit_Tbl.btnUpdate_Click (Objektabsender, EventArgs e) in C: \ Users \ gd Dokumente \ Visual Studio 2008 \ Projekte \ hybrid \ hybrid \ User_Controls \ Imgloader_Add_Edit_Tbl.ascx.cs: Zeile 242
Irgendwelche Ideen?
quelle
Antworten:
Nach File.Delete-Methode ...
Ein
UnauthorizedAccessException
bedeutet eines von 4 Dingen:quelle
Path is a directory.
Danke für diesen Tipp :) Es hat mir geholfen.Ich hatte auch das Problem, daher stolperte ich über diesen Beitrag. Ich habe die folgende Codezeile vor und nach dem Kopieren / Löschen hinzugefügt.
Löschen
Kopieren
quelle
Dies ist ein altes Problem, aber ich bin beim Suchen darauf gestoßen. Es stellt sich heraus, dass mir die eigentliche Dateinamenkomponente im Speicherpfad für SaveAs fehlte ...
quelle
Wenn ein Benutzer versucht, eine Verbindung zu Ihrer Website herzustellen , weist IIS die Verbindung dem Konto IUSER_ComputerName zu , wobei ComputerName der Name des Servers ist, auf dem IIS ausgeführt wird. Standardmäßig ist das Konto IUSER_ComputerName Mitglied der Gruppe Gäste. Diese Gruppe unterliegt Sicherheitsbeschränkungen. Versuchen Sie, auf IUSER_ComputerName in diesem Ordner zuzugreifen
Hier ist eine sehr gut beschriebene Antwort zur IIS-Sicherheit
Hoffe das hilft
quelle
Klicken Sie mit der rechten Maustaste auf Visual Studio und klicken Sie auf Als Administrator ausführen
quelle
Ich habe den Fehler erhalten, weil ich nicht wusste, dass das Ziel eine Datei sein sollte. Ich hatte einen Ordner als zweiten Parameter (der in cmd funktioniert). und ich habe bekommen,
Unhandled Exception: System.UnauthorizedAccessException: Access to the path is denied.
weil C # dortFile.Move
eine Datei haben möchte, nicht nur für den ersten Parameter, sondern auch für den zweiten. Wenn Sie also ein Verzeichnis als zweiten Parameter eingeben, wird versucht, eine Datei zu schreiben, wiec:\crp
wenn Sie ein Verzeichnis namens habenc:\crp
.das wäre falsch
File.Move(args[0],"c:\\crp");
Das wäre also richtig
File.Move(args[0],"c:\\crp\\a.a");
Das gleiche gilt für
File.Copy
quelle
Wenn es sich um eine IIS-Website handelt, bei der das Problem auftritt, überprüfen Sie die Eigenschaft Identität der erweiterten Einstellungen für den Anwendungspool, den die Site oder Anwendung verwendet. Möglicherweise stellen Sie fest, dass ApplicationPoolIdentity festgelegt ist. In diesem Fall ist dies der Benutzer, der Zugriff auf den Pfad haben muss.
Sie können auch den alten Stil verwenden und einfach die Identität auf Netzwerkdienst setzen und dem Netzwerkdienstbenutzer Zugriff auf den Pfad gewähren.
quelle
Sie müssen die Berechtigungen des Ordners ändern, aus dem Sie löschen / in dem Sie speichern möchten. Klicken Sie mit der rechten Maustaste auf den enthaltenen Ordner und verwenden Sie die Registerkarte Sicherheit, um Änderungsrechte für den Benutzer zuzulassen , unter dem Ihre Anwendung ausgeführt wird.
quelle
Ich habe das Gleiche getroffen. Stellen Sie sicher, dass die Datei NICHT VERSTECKT ist.
quelle
Ich habe dieses Problem auch festgestellt, als mein Fensterdienst die Ausnahme auslöste
Als Lösung habe ich das mit meinem Dienst verknüpfte Benutzerkonto überprüft (siehe Abbildung unten)
In meinem Fall war es also NETWORK SERVICE
Gehen Sie dann zu den Ordnereigenschaften , um zu überprüfen, ob das zugehörige Benutzerkonto auch auf der Registerkarte "Berechtigung" vorhanden ist. Es fehlte in meinem Fall und als ich es hinzufügte, wurde mein Problem behoben.
Weitere Informationen finden Sie in der folgenden Abbildung
quelle
Das gleiche Problem auch für mich, ich zeigte auf den Ordner anstelle der Datei.
Stellen Sie also sicher, dass Sie im Pfad Pfad + Dateiname angeben
quelle
Überprüfen Sie die Eigenschaften Ihrer Dateien. Wenn das schreibgeschützte Element aktiviert ist, deaktivieren Sie es. Dies war mein persönliches Problem mit der UnauthorizedAccessException.
quelle
Ich habe diesen Fehler bekommen und ihn in einem Moment behoben. Ich weiß nicht, warum alle meine Ordner schreibgeschützt sind. Ich habe die schreibgeschützten Ordner abgebrochen und angewendet. Es ist jedoch weiterhin schreibgeschützt. Also habe ich die Datei in den Stammordner verschoben, es funktioniert - so komisch.
quelle
Eine UnauthorizedAccessException-Ausnahme wird ausgelöst, wenn das Betriebssystem den Zugriff aufgrund eines E / A-Fehlers oder eines Sicherheitsfehlers verweigert.
Wenn Sie versuchen, auf eine Datei oder einen Registrierungsschlüssel zuzugreifen, stellen Sie sicher, dass dieser nicht schreibgeschützt ist .
quelle
Wenn Sie BitDefender verwenden, besteht eine gute Chance, dass es sichere Dateien enthält Ihren Betrieb blockiert. Dies ist eine Form des Ransomware-Schutzes, die mit einigen fortgeschritteneren Versionen geliefert wird.
Stellen Sie sicher, dass Sie Ihrer Anwendung Zugriff in BitDefender gewähren, und versuchen Sie es erneut.
Weitere Details finden Sie auf dieser BitDefender-Support-Seite .
quelle
Ich hatte das gleiche Problem auf einer neu verschobenen Website auf einem gemeinsam genutzten Server. Durch das Webhost-Panel (DotNetPanel) gelöst, wobei true die Option "Schreibberechtigungen zulassen" aktiviert ist. Wenn Sie sich also auf einem gemeinsam genutzten Server befinden, bevor Sie den gesamten Code überprüfen, der einen Blick auf die Serverkonfiguration wert ist, können Sie viel Zeit sparen.
quelle
Beachten Sie, dass Sie, wenn Sie versuchen, über Ihren Code auf einen Pfad für freigegebene Ordner zuzugreifen, dem physischen Ordner nicht nur über die Registerkarte "Sicherheit" die richtigen Berechtigungen erteilen müssen. Sie müssen den Ordner auch über die Registerkarte "Freigeben" für den entsprechenden Benutzer des App-Pools "freigeben"
quelle
Ich war mit diesem Fehler konfrontiert, weil
Manchmal, wenn ich
Combine
den Pfad mit Dateiname undFileName = ""
Es wird
Path Directory
keinfile
Problem, wie oben erwähntSie müssen also nachsehen,
FileName
ob dies der Fall istquelle
Ich hatte den genauen Fehler beim Löschen einer Datei. Es handelte sich um einen Windows-Dienst, der unter einem Dienstkonto ausgeführt wurde und ein PDF-Dokument nicht aus einem freigegebenen Ordner löschen konnte, obwohl er die vollständige Kontrolle über den Ordner hatte.
Für mich funktionierte die Navigation zur Registerkarte Sicherheit unter Freigegebener Ordner> Erweitert> Freigeben> Hinzufügen.
Ich habe dann das Dienstkonto zur Administratorgruppe hinzugefügt, die Änderungen übernommen und das Dienstkonto konnte dann alle Vorgänge für alle Dateien in diesem Ordner ausführen.
quelle
Für diejenigen, die versuchen, eine UWP-Anwendung (Universal Windows) zu erstellen, sind die Dateiberechtigungen viel eingeschränkter und werden im Allgemeinen standardmäßig verweigert. Es ersetzt auch die Systembenutzerberechtigungen. Sie haben grundsätzlich nur Zugriff auf Dateien in beiden
Weitere Informationen finden Sie hier => https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions
quelle
In meinem Fall war das Problem Norton. Mein internes Programm verfügt nicht über die richtige digitale Signatur. Beim Versuch, eine Datei zu löschen, wurde die UnauthorizedAccessException ausgegeben.
Wenn Sie eine Benachrichtigung erhalten, können Sie diese von dort aus bearbeiten. In meinem Fall gab es keine Benachrichtigung, die ich bemerkte. So verhindern Sie, dass Norton das Programm blockiert.
quelle
Auch ich hatte das gleiche Problem, als ich versuchte, dies nach der Bereitstellung auf dem Server zu tun:
Ich habe einer anderen Gruppe, einschließlich des Administrators, die Erlaubnis in IIS erteilt, und mein Problem wurde gelöst.
quelle
Ich habe festgestellt, dass dieser Fehler im DESIGN-MODUS im Gegensatz zu? Ausführungsmodus ... Wenn Sie beispielsweise ein Klassenmitglied erstellen, für das Zugriff auf eine INI- oder HTM-Datei (Konfigurationsdatei, Hilfedatei) erforderlich ist, möchten Sie das Element in der Deklaration möglicherweise NICHT initialisieren, sondern später initialisieren in FORM_Load () etc ... Wenn Sie initialisieren ... Verwenden Sie eine Guard-IF-Anweisung:
Dies verhindert, dass der MSVS Designer versucht, eine INI- oder HTM-Datei zu erstellen, wenn Sie sich im Entwurfsmodus befinden.
quelle
Dieser Fehler wurde ausgelöst, als ich versuchte, einen Ordner sehr schnell umzubenennen, nachdem er entweder verschoben oder erstellt wurde.
Eine einfache
System.Threading.Thread.Sleep(500);
Lösung:quelle
In meinem speziellen Fall habe ich wiederholt 10000 Ordner erstellt und gelöscht. Es scheint mir, dass das Problem darin bestand, dass der zugrunde liegende
Directory.Delete(path, true)
Betriebssystemmechanismus die Dateien möglicherweise immer noch von der Festplatte löscht , obwohl die Methode zurückkehrt. Und wenn ich unmittelbar nach dem Löschen alter Ordner anfange, neue Ordner zu erstellen, sind einige von ihnen immer noch gesperrt, da sie noch nicht vollständig gelöscht wurden. Und ich erhalte die System.UnauthorizedAccessException: "Der Zugriff auf den Pfad wird verweigert".Die Verwendung von
Thread.Sleep(5000)
afterDirectory.Delete(path, true)
löst dieses Problem. Ich stimme absolut zu, dass dies nicht sicher ist, und ich ermutige niemanden, es zu verwenden. Ich würde gerne hier einen besseren Ansatz finden, um dieses Problem zu lösen und meine Antwort zu verbessern. Jetzt gebe ich nur eine Idee, warum diese Ausnahme auftreten kann.quelle
Überprüfen Sie zunächst den Pfad, ob das Doppelpunktzeichen (:) nach dem Laufwerksbuchstaben fehlt oder nicht. Wenn der Doppelpunkt nicht fehlt, können Sie überprüfen, ob für diesen Pfad eine Zugriffs- / Schreibberechtigung erteilt wurde. Ich hatte das gleiche Problem und mir fehlte nur der Doppelpunkt, die Erlaubnis und alles andere war in Ordnung.
wird aber gut funktionieren,
gibt Ihnen Zugriffsverweigerungsfehler.
quelle
Ich habe versucht, System.IO.File.OpenWrite (Pfad) zu verwenden.
und es hat nicht funktioniert, weil ich OpenWrite () nur einen Pfad zu einem Verzeichnis übergeben habe, aber es erfordert einen Pfad bis zu der Datei, die Sie schreiben möchten. Daher muss ein vollständiger Pfad einschließlich der Dateinamenerweiterung am Ende an OpenWrite übergeben werden, um UnauthorizedAccessException zu vermeiden
quelle
Ich bin auch auf diesen Beitrag gestoßen, weil ich mich mit dem gleichen Problem befasst habe. Es sieht so aus, als ob die Datei verwendet wird und daher nicht in die Datei schreiben kann. Obwohl nicht in der Lage, es herauszufinden, welcher Prozess es verwendet. Der andere Benutzer, der in diesem Feld angemeldet war, hat sich abgemeldet. Es werden keine Benutzer angezeigt, die ihn halten. Irgendwelche schnellen Tipps, wie man dasselbe findet.
Danke, Lakshay (Entwickler)
quelle
Um dieses Problem zu lösen, folge ich dem Scot Hanselman-Ansatz bei Debugging System.UnauthorizedAccessException (häufig gefolgt von: Zugriff auf den Pfad wird verweigert) Artikel, der Code mit Beispiel ist unten:
quelle