Asp.net
我需要更改什麼以允許我的 IIS7 ASP.Net 3.5 應用程序創建事件源並將事件記錄到 Windows EventLog?
在 IIS 7 下執行的 ASP.Net 3.5 似乎不允許開箱即用。
if (!EventLog.SourceExists("MyAppLog")) EventLog.CreateEventSource("MyAppLog", "Application"); EventLog myLog = new EventLog(); myLog.Source = "MyAppLog"; myLog.WriteEntry("Message");
這是自 Windows 2003 以來 Windows 安全性的一部分。
您需要在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application 下的系統資料庫中創建一個條目,確保網路服務或您模擬的帳戶有權訪問此系統資料庫項。
@CheGueVerra 的連結:不允許請求的系統資料庫訪問
我從這裡複製了這個答案(問題是 Log4Net,但答案仍然適用)。technet 連結錯過了一個重要步驟。
創建系統資料庫項
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\MY-AWESOME-APP在此內部創建一個字元串值
命名它
EventMessageFile,將其值設置為C:\Windows\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll
該路徑似乎適用於 64 位和 32 位環境。
使用這種技術,您無需在系統資料庫中設置權限,一旦創建了上面的密鑰,它就應該可以工作了。
或者
,如果您沒有大型伺服器場,而只有一個小型“網路花園”,您可以在每台伺服器上執行控制台應用程序,使用 創建事件日誌源
EventLog.CreateEventSource,確保控制台應用程序由管理員執行。