ASMX Web服务无法写入源应用程序错误的日志-EventLog的访问被拒绝



我目前正在开发一个遗留的asp.net Web服务(asmx(,该服务托管在Windows Server 2016上的IIS 10上。

在IIS中,Web服务当前使用IdentityApplicationPoolIdentity运行。这是可以改变的。

我需要将消息记录到Windows事件查看器中;应用程序错误";作为EventSource,因为它显然是windows上已经存在的事件源。因此,我参考了这篇文章,并使用了以下C#代码:

try
{
System.Diagnostics.EventLog.WriteEntry("Application Error", "EventLog Test - Code EventLog", EventLogEntryType.Error);
}
catch (Exception ex)
{
// log error to file
}

当我运行应用程序时,我只得到以下错误日志:

无法打开源应用程序错误的日志。您可能没有写访问权限

我可以在IIS/registry/C#中调整哪些设置以登录到我的Windows事件查看器?你知道如何解决这个错误吗?

由于安全访问受限,默认情况下应用程序的用户令牌没有写入Windows事件日志所需的用户权限,因此会出现此问题。

要为线程标识提供所需的权限,请通过服务器计算机上的以下注册表项修改事件日志的安全性。您应该选择应用程序正在写入的事件日志:

  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog\Application\CustomSD

  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog\System\CustomSD

CustomSD注册表值的类型为REG_SZ,并且包含安全描述符定义语言(SDDL(语法中的安全描述符。

更多信息,请参阅此链接:https://learn.microsoft.com/en-us/troubleshoot/developer/webapps/aspnet/development/fail-write-event-log#resolution.

最新更新