Deutung einer Fehlermeldung - Verweigerung des Dateizugriffs

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Deutung einer Fehlermeldung - Verweigerung des Dateizugriffs

    Moin!

    ich habe folgenden Code:

    VB.NET-Quellcode

    1. Dim d As DirectoryInfo
    2. Dim f As FileInfo
    3. If System.IO.Directory.Exists(OutputFolder) = False Then
    4. System.IO.Directory.CreateDirectory(OutputFolder)
    5. If System.IO.Directory.Exists(OutputFolder) = False Then
    6. MsgBox("Ausgabeverzeichnis " & OutputFolder & "ist nicht vorhanden oder konnte nicht angelegt werden!")
    7. Exit Sub
    8. End If
    9. Else
    10. d = New DirectoryInfo(OutputFolder)
    11. If d.GetFiles("*.dwg").Count > 0 Then
    12. If MsgBox("Im Ausgabeverzeichnis befinden sich noch DWG-Dateien!" & vbCrLf & _
    13. "Sollen diese überschreiben werden?" & vbCrLf & vbCrLf & _
    14. "Ansonsten wird der Export vorzeitig beendet.", MsgBoxStyle.YesNo, k_CompanyName) = MsgBoxResult.No Then
    15. Exit Sub
    16. End If
    17. End If
    18. Try
    19. System.IO.Directory.Delete(OutputFolder, True)
    20. Catch ex As Exception
    21. _TryReport.Show("unerwarteter Fehler in EBL.FDO_Export > CreateKacheln - alte Kacheln löschen", ex.ToString)
    22. Exit Sub
    23. End Try
    24. If System.IO.Directory.Exists(OutputFolder) = False Then
    25. System.IO.Directory.CreateDirectory(OutputFolder) ' <<<<<<< ---- Zeile 1461
    26. If System.IO.Directory.Exists(OutputFolder) = False Then
    27. MsgBox("Ausgabeverzeichnis " & OutputFolder & "ist nicht vorhanden oder konnte nicht angelegt werden!")
    28. Exit Sub
    29. End If
    30. End If
    31. End If


    Eigentlich müsste der Ordner erstellt werden können, weil dieser in der Zeile zuvor auf Exists getestet wurde.

    und bekomme diese Meldung:
    ************** Ausnahmetext **************
    System.UnauthorizedAccessException: Der Zugriff auf den Pfad "P:\KARTEN\Infopunkte_1000\Neu" wurde verweigert.
    bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
    bei System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
    bei System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
    bei EBL_FDOExport.lbl_LayerFile.CreateKacheln(String NameTBDM, Int64 AusgabeScale, String FilterAttribut) in X:\VB_NET_2015\Projects\tappenbeckja\EBL_FDOExport\EBL_FDOExport\frm_FDO_Export.vb:Zeile 1462.


    Kann man aus der Meldung irgendwie ableiten, was den Zugriff verweigert hat. Offene Datei, irgendetwas mit dem Ordner nicht OK .... ?

    jan99 schrieb:

    VB.NET-Quellcode

    1. System.IO.Directory.Delete(OutputFolder, True)
    2. ' ...
    3. System.IO.Directory.CreateDirectory(OutputFolder) ' <<<<<<< ---- Zeile 1461

    Du löschst das Verzeichnis, um es dann sofort wieder zu erstellen?
    Es ist merkwürdig. Was ist der Plan?
    Hast Du die Rechte, dies zu tun?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Beim Aufruf des Codes wird entweder das Verzeichnis gelöscht, wenn es existiert oder es wird erstellt, wenn es nicht existiert.
    Der Code selber funktioniert syntaktisch, bei mir läuft er mit einem Verzeichnis, auf welches ich sicher Zugriff habe. Die Logik hinter dem Code will ich nicht deuten.
    Also liegt das eigentliche Problem in den Zugriffsrechten für den von jan99 angegebenen Pfad.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.