在asp.net 中,我想把一条信息写到windwos日志中,.net Log给提供了一个方法!
Log.Write()
使用报错!
说明: 应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请与系统管理员联系,或在配置文件中更改该应用程序的信任级别。 异常详细信息: System.Security.SecurityException: 不允许所请求的注册表访问权。源错误:
行 68: private static void LogEvent(string eventLogSource, string message, EventLogEntryType eventLogEntryType)
行 69: {
行 70: EventLog.WriteEntry(eventLogSource, message, eventLogEntryType);
行 71: }
行 72: }
研究了一天未果
Log.Write()
使用报错!
说明: 应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请与系统管理员联系,或在配置文件中更改该应用程序的信任级别。 异常详细信息: System.Security.SecurityException: 不允许所请求的注册表访问权。源错误:
行 68: private static void LogEvent(string eventLogSource, string message, EventLogEntryType eventLogEntryType)
行 69: {
行 70: EventLog.WriteEntry(eventLogSource, message, eventLogEntryType);
行 71: }
行 72: }
研究了一天未果
//Write the entry to the event log
eventLog.WriteEntry(messageText, LogEntryType);从Duwamish示例里的这几句来看, WriteEntry并不是静态方法,注意实例化EventLog类后面那两个参数,
不过也许也不是这里的问题,建议参考MSDN或,装上Duwamish,参考SystemFramework项目里的ApplicationLog类
会有你的答案.
可以通过把IWAM_XXXXXXX用户添加到管理员组或赋予其相应权限来解决。(如果是2003操作系统要增加WPG_IIS用户相应权限)
如果直接写日志到Application或者系统默认的已经存在的日志项,是没有问题的。
如果自己把建一个日志项,再注册一个事件源,默认是不行的!必须要把ASPNET帐号加入administraotrs组(system组应该也可以,我没试),重启IIS或电脑生效.这样做太.......所以我放弃了.
如果建一个C#(VB.NET)应用程序,注册一个事件源到一个新的日志项里,程序会在系统里建一个你指定的日志项,并注册你指定的事件源.运行的话,没有任何错误!所以归根结底,还是权限的问题!
所以呢,我就没有把日志记到系统日志里了,改为发邮件或者记到一个自定义格式的文本文件或XML文件里.