[英]IIS can't write logs to a symlink that references a network share
早上好! 我有一個運行 iis 的服務器,一個文件夾位於不同網絡(和域)中的另一台機器上。 我已經成功地建立了一個到網絡目錄的符號鏈接,但我不明白為什么 IIS 不能寫這個目錄。
我已授予此文件夾上每個人的讀取、寫入和執行權限。 當我用文件資源管理器打開這個目錄時,一切正常,但是當我嘗試在上面寫時,iis 給我錯誤 500。 從日志結果來看,我的 ASP 應用程序無法寫入此目錄。 對不起,如果這是一個愚蠢的問題,但我已經嘗試了兩天,現在我結束了我的想法。 =(
這是舊的,我不知道是否有這樣做的標准方法,但我知道它必須以另一種方式完成。
我在 Windows NLB 下運行兩個 IIS 8.5 Web 服務器並登錄到 DFS 共享上的單獨文件夾。 服務器共享配置,DFS 復制維護服務器內容的一致性。
每個網站都有一個logs
符號鏈接文件夾,指向 DFS 共享上的子文件夾。
服務器 1: c:\\inetpub\\mywebsite\\logs -> \\\\ad.mydomain.com\\Logs\\Server1\\mywebsite
Server2: c:\\inetpub\\mywebsite\\logs -> \\\\ad.mydomain.com\\Logs\\Server2\\mywebsite
這相當於將站點日志目錄設置為
\\\\ad.mydomain.com\\Logs\\%COMPUTERNAME%\\mywebsite
。
這對我有用,有一段時間,但后來停止工作。 自然,結果不是一個,而是兩個問題。
第一個是關於權限。
Server1
和Server2
是域WebServers
組的一部分,該組完全控制 DFS 共享子文件夾Server1
和Server2
,以及Administrators
和SYSTEM
,所有這些都是從共享繼承的。 通過網站代碼寫入logs
文件夾,用於站點應用程序日志,工作正常。
但是 IIS W3SVCxx
日志文件夾不會被創建,手動創建它們也沒有任何區別。 不創建 IIS 日志文件。
事實證明,IIS 需要專門為日志目錄上的計算機 ( %USERDOMAIN%\\%COMPUTERNAME%
) 設置完全控制權限。 我不知道為什么,找不到任何參考來解釋它。
此權限存在於Server1
和Server2
子文件夾中,顯然是從共享繼承的,即使Logs
父文件夾沒有它。 我沒有添加那個權限,不知道這個要求,當然相信WebServers
組權限就足夠了。 我不知道這些權限是如何添加的。
但是,對Server1
和Server2
子文件夾的此%USERDOMAIN%\\%COMPUTERNAME%
權限是不可繼承的。 因此無法寫入ServerN\\mywebsite
文件夾,並且從未創建W3SVCxx
子文件夾。
只要我使用\\\\ad.mydomain.com\\Logs\\%COMPUTERNAME%\\mywebsite
作為日志目錄,將此權限添加到Server1
和Server2
文件夾即可解決該問題。
第二個問題沒有解決。
使用符號鏈接c:\\inetpub\\mywebsite\\logs -> \\\\ad.mydomain.com\\Logs\\%COMPUTERNAME%\\mywebsite
在開始時確實有效,並且在修復權限問題后工作了一段時間,它再次停止工作,我找不到任何信息來解釋原因。
結論
將 IIS 日志目錄設置為站點名稱文件夾的唯一真正優勢是我不需要知道站點 ID 即可找到正確的W3SVCxx
文件夾。 但是,作為一個極簡主義者,我決定忽略權限問題並將網站的日志目錄設置為\\\\ad.mydomain.com\\Logs\\%COMPUTERNAME%
。 必須查找站點 ID 是讓我的日志返回的一小筆費用。
我強烈建議使用此解決方案,並盡可能避免記錄到符號鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.