【问题标题】:How To Disable .NET Event Log Warnings?如何禁用 .NET 事件日志警告?
【发布时间】:2012-01-11 18:24:56
【问题描述】:

根据我们的政策,我们不再允许写入事件日志,因此我将所有事件日志代码从写入事件日志中删除,这有效,但是我不断收到来自错误的随机 ASP.NET 4.0 警告,甚至虽然我的 Application_Error 中有代码来处理所有错误。

有什么方法可以完全禁用事件日志记录,也许是 web.config 更改或 IIS 设置来禁用它?

也注意到了很多错误......不仅仅是我的 HTTPHandler

EventLog记录示例:

事件代码:3005 事件消息:发生未处理的异常。 活动时间:9/8/2011 10:26:04 AM 活动时间 (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 异常消息:堆栈跟踪

【问题讨论】:

  • 您收到哪些错误?
  • 我们目前正在测试我们的密码请求过期,如果过期会抛出异常......它会进入我们的自定义错误页面......但它在事件日志中记录了一个警告
  • 在 IIS 中禁用日志记录不起作用,仍然会从 ASP.NET 产生事件日志警告
  • 确保您了解新政策。它可能会阻止您的代码写入事件日志,但您是否认真建议不允许 .NET 写入事件日志?如果是这样,请参阅msdn.microsoft.com/en-us/library/bb398933.aspx 了解写入事件日志的内容以及如何将其配置为写入其他位置(如数据库)。

标签: asp.net error-handling event-log


【解决方案1】:

ASP.NET 的默认行为是将未处理 异常写入事件日志。防止将它们写入事件日志的方法是自己处理它们。您可以通过 Application_OnError 处理程序中的 Global.asax 文件执行此操作。

您还可以调用 Server.ClearError() 来防止它冒泡到任何其他处理程序。

【讨论】:

    【解决方案2】:

    确实,默认行为是将所有未处理的异常记录到应用程序事件日志中,如 in this answer 所述。此行为由web.config 中的<system.web><healthMonitoring> 元素控制,默认设置显示为here。这个想法是,对于每个未处理的异常,都会引发一个 System.Web.Management.WebBaseErrorEvent 的实例,然后 ASP.NET 默认设置会导致它被记录到应用程序事件日志中。

    您可以处理所有错误,也可以更改 ASP.NET 设置。可以使用<system.web><healthMonitoring><rules> 更改导致记录这些事件的规则。既然你说你被禁止写入事件日志,我猜你最好的选择是删除默认规则为explained here

    <healthMonitoring>
      <rules>
        <clear />
      </rules>
    </healthMonitoring>
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-19
      • 1970-01-01
      • 2020-02-19
      • 1970-01-01
      • 2013-02-25
      • 2022-01-21
      相关资源
      最近更新 更多