C# &引用;句柄无效";使用ASP.NET写入事件日志时出错
我正在使用ASP.NET 2.0应用程序(由我的前任创建)。用户使用广告凭据登录,应用程序中的所有操作都使用这些凭据。我在应用程序中修改了一个与事件日志无关的页面,现在我的用户收到了以下错误: 以下是global.asax文件中的相关代码:C# &引用;句柄无效";使用ASP.NET写入事件日志时出错,c#,asp.net,active-directory,event-log,C#,Asp.net,Active Directory,Event Log,我正在使用ASP.NET 2.0应用程序(由我的前任创建)。用户使用广告凭据登录,应用程序中的所有操作都使用这些凭据。我在应用程序中修改了一个与事件日志无关的页面,现在我的用户收到了以下错误: 以下是global.asax文件中的相关代码: public void LogException(Exception e) { string exceptionXml = RenderException(e, true); _EventLog.WriteEntr
public void LogException(Exception e)
{
string exceptionXml = RenderException(e, true);
_EventLog.WriteEntry("Exception of type " + e.GetType().FullName + " occurred.\n\n" + exceptionXml, EventLogEntryType.Error);
}
RenderException()只是将异常XML放入一个简单的字符串中,删除空格
我不知道如何消除这个错误。我试着用iisreset重新发布网站。我尝试重新启动web服务器(2k3 w/iis 6.0),刷新应用程序池。我还尝试在注册表中修改顶级事件日志项的权限。有人能告诉我如何摆脱这个错误吗?这不会发生在我的电脑上,所以很难复制。此外,使用的浏览器似乎并不重要。以前的版本适用于出现此错误的相同人员 默认情况下,ASPNET用户无法访问现有的事件日志类别 如果要将消息写入事件日志,则必须创建自己的类别
您似乎在调用
\u EventLog
实例上的EventLog类的实例方法:
_EvengLog.WriteEvent(message, ...);
但是:
任何实例成员都不能保证线程安全
我怀疑这可能是问题的根源,建议您使用一种静态方法(保证线程安全):
或者,您也可以实现自己的同步,但我不建议这样做。仅供参考“请注意,您可以随时对自己的帖子和问题的任何部分发表评论。但是,评论其他人的帖子是一种特权。”通过感谢,我没有意识到这一点!我将编辑此免责声明。我可能没有说得足够清楚,但我已经尝试过此操作(“我还尝试过修改注册表中顶级事件日志项的权限”)。我确保intranet组中的所有用户(他们需要这个来访问站点)完全控制顶级事件日志键。除非我错过了一些不起作用的东西(比如重启后…@Heytherlameman我刚刚添加了更多信息,可能会对您有所帮助。我能够在我的生产服务器上实现这一点。我的用户仍然会收到此错误,但我不会。这是非常零星的。它也有相同的堆栈跟踪,所以我认为这个问题没有解决。我是否需要在用户机器上进行某种刷新以使其正常工作?@Heytherlameman-我仍然认为这个错误很可能是由于线程问题造成的。您应该检查整个代码库是否存在这样的线程问题。
System.Diagnostics.EventLog.WriteEvent(source, message, ...);