Web 程式在本機上執行,通常寫事件檢視器和檔案的權限是預設為最高權限。
所以執行起來不會有什麼問題,但是一旦真正上到IIS後,才會開始發現一些問題,而大部分都是因為權限沒有設定好的關係。
可以先參考保哥這篇文章,超級推薦:
此篇文章針對以下兩個項目的寫入權限做說明。
1.
寫事件檢視器
2.
使用Log4Net寫檔
OS :Windows 2008 R2
IIS版本: 7.5
IIS版本: 7.5
★寫事件檢視器
如果看了保哥的文章,就知道IIS7.5集區會預設以 「ApplicationPoolIdentity」這個帳戶來執行。
所以我們只要把它加到有寫入/瀏覽事件檢視器權限的群組: Event Log Readers
但是我們指定的帳戶名稱必須是: 「IIS AppPool\應用程式集區名稱」
這樣才能對應到要設定權限的集區。
如果看了保哥的文章,就知道IIS7.5集區會預設以 「ApplicationPoolIdentity」這個帳戶來執行。
所以我們只要把它加到有寫入/瀏覽事件檢視器權限的群組: Event Log Readers
但是我們指定的帳戶名稱必須是: 「IIS AppPool\應用程式集區名稱」
這樣才能對應到要設定權限的集區。
★使用Log4Net寫檔
一般我們都是把log4net.xml , log4net.dll 和我們要寫入的檔案放在一起就可以寫檔了。
但是因為Web AP路徑的緣故,常常是程式讀取不到log4net.xml。
所以放在 AssemblyInfo.cs 的log4net設定字串,還是乖乖打上所在的資料夾名稱:「./App_Data/log4net.xml」
//log4net
//log4net
[assembly:
log4net.Config.XmlConfigurator(ConfigFile = "./App_Data/log4net.xml",
ConfigFileExtension = "xml", Watch
= true)]
然後log4net.xml裡面設定的file value也是乖乖打上資料夾名稱:「./App_Data/Error.log」
<file value="./App_Data/Error.log" />
<file value="./App_Data/Error.log" />
最後別忘了先新增Error.log,並把Error.log的讀寫權限打開。(因為是記錄檔&內部用,我就直接開Everyone了)
沒有留言:
張貼留言