2014-05-14 23 views
2

我正在嘗試將文本寫入我的Visual Studio項目中的文件。如果文件不存在,我想在項目中創建它。難以在C#中將文本寫入新文件,根路徑錯誤,訪問被拒絕

當我試圖實現文本寫入新文件的方法,會出現以下錯誤:

異常詳細信息:System.UnauthorizedAccessException:訪問 路徑「C:\ WINDOWS \ SysWOW64中\ inetsrv \ ErrorLog'被拒絕。

看到好像安裝程序的每臺計算機上的根路徑不同,如何確保此方法可以/會在用戶的項目中創建新的文本文件? (不知道根URL)。

該方法在調用時應將文本寫入文件。

/// <summary> 
    /// Logs a message to a file. 
    /// </summary> 
    /// <param name="msg"> 
    /// The message. 
    /// </param> 
    public void LogMessageToFile(string message) 
    { 
     TextWriter tw = new StreamWriter("ErrorLog"); 
     tw.WriteLine(message); 
     tw.Close(); 
    } 

任何幫助將非常感激!

預先感謝您

+0

請分享該方法的代碼。 –

+1

如果您創建一個沒有路徑的文件,它將在執行路徑文件夾中創建,即Exe文件所在的文件夾。 – Machinarius

+1

以管理員身份運行該程序;)這可能是解決方案。 –

回答

2

如果這是一個Web項目(ASP.NET),那麼你應該寫在標準文件夾中的日誌文件,只要在你的根站點文件夾存在。默認情況下,你無法將根目錄外編寫出於安全原因

​​

讀/寫權限的代碼都需要在你的根文件夾下的文件夾APP_DATA使用(數據庫文件,日誌文件和其他數據文件)。
另請注意,StreamWriter應該包含在using語句中以確保正確關閉異常或其他寫入問題。

+0

謝謝!太棒了。 – user3395937