我有一个ASMX Web服务作为'网络服务'运行。 每次调用Web服务时(以及发生错误时),我希望能够写入自定义事件日志。
我使用在Windows server 2008计算机上以管理员身份运行的以下代码创建了一个新的事件日志(MyLog):
if (!EventLog.SourceExists(APPLICATIONNAME))
{
EventLog.CreateEventSource(APPLICATIONNAME, EVENTLOGNAME);
}
EventLog.WriteEntry(APPLICATIONNAME, "Service started", EventLogEntryType.Information);
其中APPLICATIONAME为“MyApp”,EVENTLOGNAME为“MyLog”(名称已更改以保护无辜者)。
首先,它创建一个新的“MyLog”事件日志(使用eventvwr验证),但其内容与应用程序事件日志相同。我期待得到一个空的,未连接的事件日志。
其次,当我尝试使用以下代码从Application_Start方法中写入新创建的事件日志时:
EventLog.WriteEntry(APPLICATIONNAME, "Service started", EventLogEntryType.Information);
我收到 System.Diagnostics.EventLogPermission 类型的 SecurityException 。
我试图在注册表中更改“MyLog”配置单元的ACL(如建议的on MSDN)但无效。
我不想更改Web服务的身份,也不会更改系统上其他应用程序使用的应用程序事件日志中的ACL。
答案 0 :(得分:0)
由于我的Web服务在SharePoint的上下文中运行,我只是使用 SPSecurity.RunWithElevatedPrivileges 将调用包装到EventLog.WriteEntry。