【问题标题】:Cannot write to the Event log无法写入事件日志
【发布时间】: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"

标签: c# asp.net vb.net iis


【解决方案1】:

您的用户帐户可能没有足够的权限来创建事件源,只有管理员帐户才能这样做。如果您可以以管理员身份登录,请再次运行您的代码或在此处添加一个文件夹:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\IDDISLOG

这应该允许您的应用程序使用该源写入事件日志。您可能需要进一步配置实际的注册表项以满足您的需要。

【讨论】:

  • 是的。我必须创建 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\IDDISLOG 但我得到无法打开源“IDDISLOG”的日志。您可能没有写入权限。
  • @SNash 您需要再创建一级注册表文件夹:..\eventlog\application\IDDISLOG
  • 是的,我也有这个:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\IDDISLOG
  • @SNash 与该注册表项,您是否收到相同的错误消息? “您可能没有写入权限”?
【解决方案2】:

在 IIS(Windows 服务器)中,您应该更改 de 应用程序池使用的 de 标识,以便新标识具有写入事件日志的权限。 选择应用程序池和高级设置。然后编辑并插入一个自定义帐户,尽管本地系统就足够了。如果您使用自定义帐户,请确保不要使用密码将要过期的用户,因为当它发生时,记录到事件日志将失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多