2017-08-08 156 views
0

EDI具有C#ASP.NET 4.5網絡表單應用程序,使用下面的代碼:無法寫入到事件日誌

if (!EventLog.SourceExists(sSource)) EventLog.CreateEventSource(sSource, sLog); 

    EventLog.WriteEntry(sSource, message, level); 

由於第一行是失敗,我創建 HKEY_LOCAL_MACHINE \系統\ CurrentControlSet \服務\事件日誌\在註冊表中的應用\ IDDISLOG

我得到WriteEntry方法以下異常:

Cannot open log for source 'IDDISLOG'. You may not have write access. 

搜索其他類似的問題卜沒有人爲我工作。

這是我迄今所做的:

添加「網絡服務」項目文件夾

新增Network service並把它完全訪問權限。 HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ eventlog

添加了Nertwork服務並賦予其完全訪問權限。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Security 

檢查並看到w3wp.exe * 32進程使用用戶名ASP.Net v4.0運行。

所以添加ASP.Net 4.0版到

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog 

儘管如此,誤差保持

+1

在事件查看器中是否有一個名爲IDDISLOG的日誌容器?我假設如果你這樣做是一個自定義的作爲谷歌搜索IDDISLOG什麼也不返回。 – Sorceri

+0

這個事件源IDDISLOG已經存在於機器上嗎?如果沒有,您需要先創建它,爲此您需要管理員權限,這是您的應用程序不應具有的權限。如果是這種情況,那麼在安裝應用程序時希望只需一點點看家務。 – ADyson

+0

IDDISLOG是試圖在註冊表中創建的源Im的名稱。所以我通過sSource =「IDDISLOG」 –

回答

0

您的賬號可能沒有足夠的權限來創建一個事件源,只有管理員帳戶可以做。如果您可以以管理員身份登錄,請再次運行代碼或在此處添加文件夾:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ eventlog \ Application \ IDDISLOG

這應該允許您的應用程序使用該代碼寫入事件日誌資源。您可能需要進一步配置實際的註冊表項以滿足您的需求。

+0

是的。我必須創建HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ eventlog \ IDDISLOG,但我得到無法打開日誌的源'IDDISLOG'。您可能沒有寫入權限。 –

+0

@SNash您需要進一步創建一個級別的註冊表文件夾:.. \ eventlog \ application \ IDDISLOG – nolnah93

+0

Yes我也是這樣的: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ eventlog \ Application \ IDDISLOG –