如何禁用.NET事件日志警告?

6
根据我们的政策,我们不再允许写入事件日志,因此我从写入事件日志的所有代码中删除了它们。这有效,但是我仍然会收到来自错误的随机的ASP.NET 4.0警告,即使我在Application_Error中编写了处理所有错误的代码。
有没有办法完全禁用事件记录,也许通过更改web.config或IIS设置来禁用它?
注意,我遇到了很多错误,而不仅仅是我的HTTPHandler。
以下是EventLog记录示例:
事件代码:3005 事件消息:发生未经处理的异常。 事件时间:2011年9月8日上午10:26:04 事件时间(UTC):2011年9月8日下午2:26:04 事件ID:6b56761296d24e1aa01038ce125be044 事件序列:97 事件发生次数:1 事件详细信息代码:0
应用程序信息:     应用程序域:/LM/W3SVC/1/ROOT/-2-129599642336131368     信任级别:完全     应用程序虚拟路径:/     应用程序路径:     计算机名称:
进程信息:     进程ID:6396     进程名称:w3wp.exe     帐户名称:IIS APPPOOL\MyAppPool
异常信息:     异常类型:System.Exception     异常消息:STACKTRACE

你收到了哪些错误信息? - Daniel A. White
1
禁用IIS中的日志记录没有起作用,仍会从ASP.NET产生事件日志警告。 - jaekie
1
请确保您理解了新政策。它可能会阻止您的代码写入事件日志,但您是否真的认为.NET不允许写入事件日志?如果是这样,请参见http://msdn.microsoft.com/en-us/library/bb398933.aspx以了解是谁在写入事件日志以及如何配置它以将其写入其他地方(例如数据库)。 - John Saunders
我理解我们的政策,我们的网络抱怨说我们所有的应用程序都在垃圾邮件事件日志中发送垃圾邮件,因此他们要求完全清除它,现在我们需要仅记录到数据库和电子邮件,我们的应用程序不得在事件日志中留下任何痕迹。但是我仍然收到警告,这些警告仍然不被允许,我不确定是否可能,但我需要先证明它是不可能的。 - jaekie
您接受了下面的答案,但它并没有提供太多细节。那么究竟是什么解决方案呢? - sharptooth
显示剩余3条评论
2个回答

5
ASP.NET的默认行为是将未处理的异常写入事件日志。要防止它将它们写入事件日志,您需要自己处理它们。您可以通过Global.asax文件中的Application_OnError处理程序来完成此操作。您还可以调用Server.ClearError()以防止它冒泡到任何其他处理程序。

2
默认情况下,所有未处理的异常都会被记录到应用程序事件日志中,如此答案所述。这种行为受控于<system.web><healthMonitoring>元素在web.config文件中的设置,其默认设置在此处。其思想是对于每个未处理的异常,都会触发System.Web.Management.WebBaseErrorEvent的实例,然后ASP.NET默认设置将导致它被记录到应用程序事件日志中。
您可以处理所有错误或更改ASP.NET设置。通过<system.web><healthMonitoring><rules>可以更改导致记录这些事件的规则。由于您说禁止写入事件日志,我猜您最好的选择就是按照此处所述擦除默认规则。
<healthMonitoring>
  <rules>
    <clear />
  </rules>
</healthMonitoring>

该功能会删除两个默认规则,每个规则都会导致写入事件日志。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接