【发布时间】:2017-08-08 19:10:41
【问题描述】:
ed我有 C# ASP.NET 4.5 Webform 应用程序并使用以下代码:
if (!EventLog.SourceExists(sSource)) EventLog.CreateEventSource(sSource, sLog);
EventLog.WriteEntry(sSource, message, level);
由于第一行失败,我创建了 注册表中的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\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 v4.0到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog
仍然存在错误
【问题讨论】:
-
您的事件查看器中是否有一个名为 IDDISLOG 的日志容器?我假设如果你这样做是自定义的,因为谷歌搜索 IDDISLOG 没有返回任何内容。
-
机器上是否已经存在此事件源 IDDISLOG?如果没有,您需要先创建它,您需要管理员权限,而您的应用程序不应该拥有该权限。如果是这种情况,希望您在安装应用程序时只做一些家务。
-
IDDISLOG 是我试图在注册表中创建的源名称。所以我通过 sSource="IDDISLOG"