Also... Ich dachte immer, wenn man auf eine Datei zugreift, aber den Namen ohne Pfad angibt (in meinem Fall CAISLog.csv), würde .NET erwarten, dass sich die Datei im selben Pfad wie die laufende .exe befindet.
Dies funktioniert, wenn ich durch eine Lösung (C# .NET2.* VS2K5), aber wenn ich die app im normalen Modus (gestartet von einem Websphere MQ-Trigger-Monitor & läuft im Hintergrund als Netzwerkdienst) anstelle des Zugriffs auf die Datei auf den Pfad, wo die .exe ist es wird gesucht, bei C:\WINDOWS\system32. Wenn es darauf ankommt Die übergeordnete Aufgabe .exe ist in fast der gleichen Ordnerstruktur / Pfad wie meine app
Ich erhalte einen entsprechenden Fehler: " System.UnauthorizedAccessException: Der Zugriff auf den Pfad ' C:\WINDOWS\system32\CAISLog.csv ' wird verneint. "
Meine Abhilfe besteht darin, den Speicherort meiner Datei vollständig zu qualifizieren. Was ich jedoch verstehen möchte, ist "Wie lautet die .NET-Regel, die regelt, wie ein Pfad aufgelöst wird, wenn während der IO nur der Dateiname angegeben wird?" Ich habe das Gefühl, dass mir ein grundlegendes Konzept fehlt, und das ärgert mich sehr.
edit - Ich bin mir nicht sicher, ob es eine.NET-Regel per se ist, aber Schmuli scheint das Konzept ein wenig klarer zu erklären. Ich werde auf jeden Fall versuchen, Rob Prouse's Vorschläge in der Zukunft so +1 auf, dass auch.
Wenn jemand Vorschläge zur Umformulierung hat, die betonen, dass ich nicht realmente Ich habe mich nicht darum gekümmert, den Pfad zu meiner .exe zu finden - ich habe einfach nicht verstanden, was mit der relativen Pfadauflösung los ist (und vielleicht habe ich immer noch meine Terminologie durcheinander gebracht)...