如何从作为网络服务运行的ASMX Web服务写入自定义事件日志?

时间:2009-05-11 22:09:29

标签: permissions service events logging

我有一个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。

1 个答案:

答案 0 :(得分:0)

由于我的Web服务在SharePoint的上下文中运行,我只是使用 SPSecurity.RunWithElevatedPrivileges 将调用包装到EventLog.WriteEntry。