所以......我曾經認爲,當你訪問一個文件,但指定名稱時沒有路徑(在我的情況下爲CAISLog.csv),那麼.NET會希望該文件駐留在與運行的.exe相同的路徑中。默認/相對路徑分辨率在.NET中如何工作?
當我踩着通過解決這個工程(C#.NET2。* VS2K5),但是當我運行在正常模式下的應用程序(由WebSphere MQ的觸發啓動監控&在後臺作爲網絡服務運行),而不是在C:\ WINDOWS \ system32中尋找.exe文件的路徑下訪問該文件。如果有問題父任務的.exe與我的應用幾乎處於相同的文件夾結構/路徑
我得到一個匹配錯誤:「System.UnauthorizedAccessException:訪問路徑'C:\ WINDOWS \ system32 \ CAISLog。 csv'被拒絕「
我的解決方法是完全限定我的文件的位置。然而,我想了解的是「在IO期間僅指定文件名時,如何解決路徑解決問題的.NET規則是什麼?」我覺得我錯過了一些基本概念,並且它讓我感到不好。
編輯 - 我不確定它本身就是一個.NET規則,但Schmuli似乎是在更清楚地解釋這個概念。我一定會在未來嘗試羅伯·普勞斯的建議,所以也是如此。
如果任何人有強調我不是發現我的.exe文件的路徑真的照顧一些重新措辭的建議 - 而只是不明白髮生了什麼事情,相對路徑解析(我可能還是有我的terminology搞砸了)...
如果我沒有記錯,Assembly.Location返回程序集的完整路徑,即包含文件名。所以你將不得不調用Path.GetDirectoryName(ass.Location)來實際獲取目錄。除此之外,答案爲+1。 – OregonGhost 2008-11-05 21:02:47
謝謝你,Rob - 有幫助的東西,但我認爲Schmuli的回答給了我更多洞察什麼是困擾我的一般概念。 +1 – 2008-11-05 23:40:10