2017-08-08 160 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 –