2011-08-30 110 views
2

我正在使用nlog編寫用於調試目的的日誌文件。目前,日誌文件的位置設置爲:在哪裏寫日誌文件?

<target 
    name="file" 
    xsi:type="File" 
    fileName="${specialfolder:folder=LocalApplicationData}/x/y.log" 

但這導致被寫入c:\x\y.log,不%windir%\ServiceProfiles\NetworkService\AppData\Local\x\y.log文件,我將與下NETWORK SERVICE帳戶運行asp.net/IIS期待。

檢查從Web應用程序爲Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)值產生空/空字符串,這至少說明了爲什麼我的日誌根結束了。

因此,其實兩個問題:

我們有書面和下NETWORK SERVICE帳戶下運行的服務,正確地解決這一路徑。 asp.net/IIS有什麼特別的地方,這個特殊文件夾沒有返回值?

哪裏是安全和明智的地方寫日誌,因爲我的asp.net進程正在NETWORK SERVICE帳戶下運行?

+0

您使用IIS 6或7嗎? – ccellar

+0

server2008上的IIS7 – spender

回答

1

如果我的知識正確,問題是IIS不會加載用戶網絡服務的配置文件。

你可以在應用程序池(source

load the user profile of the application pool identity

屬性設定這項功能如果設置此參數true,調用Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)應該返回正確的結果。

參見:

如果它不工作,我會建議創建一個文件夾與服務帳戶適當的權限記錄目的。

+0

完美。我最終選擇了最後一個選項,但很高興知道我哪裏出了問題。 – spender