ASP.NET/IIS7.5 寫入日誌文件不起作用(權限、UAC、配置。???)
我們在將 ASP.NET 應用程序遷移到 Windows Server 2008 R2 x64 和 IIS7.5 時遇到問題。問題是我們的 ASP.NET 應用程序寫入日誌文件,而這些日誌文件沒有被寫入。應用程序寫入其日誌文件的唯一方法是,如果我以本地管理員使用者身份登錄伺服器,或者如果我右鍵點擊並以管理員身份執行 IE,這對我們來說都不是可接受的解決方案。
我們的平台是:Windows Server 2008 R2 x64(UAC設置是預設設置)IIS7.5 ASP.NET 4.0(使用Windows身份驗證和模擬,都在web.config中)
我們的應用程序安裝到:D:
$$ appname $$ $$ appnameWebSite $$(所有 .aspx、.dll 等文件都在這裡) \Log(應用程序嘗試將日誌文件寫入此文件夾) 在伺服器上:創建新的應用程序池(名稱:
$$ appname $$, .NET 4.0, Managed Pipeline Mode: Classic, Identity: ApplicationPoolIdentity, Load User Profile: False, 所有其他屬性都是預設值) 創建的 IIS 應用程序指向 D:$$ appname $$$$ appnameWebSite $$並將其添加到新的應用程序池(完全信任級別)在本地管理員組中有一個域使用者 使用上面列出的所有配置和預設設置,ASP.NET 應用程序將不會寫入日誌文件。該應用程序在瀏覽器中似乎可以正常工作,但沒有 log.txt 文件。
為了嘗試“修復”這個問題,我們嘗試了很多方法: 已嘗試應用程序池設置:託管管道模式:集成已嘗試應用程序池設置:身份:NetworkService 已嘗試應用程序池設置:身份:LocalSystem 已嘗試應用程序池設置:載入使用者配置文件: True 讓使用者組完全控制我們的應用程序文件夾結構的文件系統(嘗試過 appname 文件夾,僅嘗試過 Log 文件夾,僅嘗試過 appnameWebSite 和 Log 文件夾)Gave IIS AppPool
$$ appname $$(匹配新的應用程序池)使用者完全控制我們的應用程序文件夾結構的文件系統(嘗試過 appname 文件夾,僅嘗試過 Log 文件夾,僅嘗試過 appnameWebSite 和 Log 文件夾) 這些東西都沒有幫助。同樣,該應用程序執行良好,只是沒有創建日誌文件。
如上所述,在應用程序執行時創建日誌文件的唯一方法是我們使用本地管理員帳戶登錄伺服器(這很有意義,因為他是超級使用者),或者我們以管理員身份執行 IE 並提升權限。
有什麼建議麼?幫助?問題?
謝謝!
好吧,經過幾天嘗試每個 IIS 選項、使用者和組帳戶、文件系統權限、程序資源管理器等,我認為我們讓它工作了:
- 我們將所有 IIS 應用程序池和網站設置重置為其預設值
- 我們還將日誌文件夾上的文件夾/文件系統權限重置為預設設置
- 然後我們關閉了伺服器上的 Internet Explorer Enhanced Security Configuration
和成功!無論哪個使用者使用 ASP.NET 應用程序,無論他們是在伺服器本身還是從工作站執行它,日誌文件都會按預期寫入。
我不知道關閉伺服器上的 Internet Explorer 增強安全配置是否是“正確”的做法,或者它是否違反了任何最佳實踐,但它似乎對我們有用。
有人有什麼要補充的嗎?
我嘗試授予所有可能的權限,但仍然沒有獲得任何日誌文件。最後我遇到了這個建議更改我的日誌文件目錄的所有權。我檢查了一下,目錄所有權設置為SYSTEM。我將其更改為管理員並遞歸應用更改。我反彈了 IIS,在瀏覽器中從該站點訪問了一個網頁,現在我有了日誌文件。萬歲!
注意:提示我的是檢查系統事件日誌。我收到 15006 錯誤,提示“日誌文件或目錄 C:\inetpub\logfiles\W3SVC1\some.log 的所有者無效。這可能是因為另一個使用者已經創建了日誌文件或目錄。”