如果浏览器断开了连接(例如,选项卡已关闭),Asp.Net会产生强制转换异常的错误行为。在这种情况下,它会抛出两个异常,这些异常并不是我们真正需要担心或记录的(或者至少我不想在日志中看到这种“噪音”)。
关于问题here的讨论更多。这是我的解决方案,用于过滤似乎有效的这些异常(在Application_Error
中。)
private static bool IsAspNetBugException(Exception exception)
{
return
(exception is TaskCanceledException || exception is OperationCanceledException)
&&
exception.StackTrace.Contains("System.Web.HttpApplication.ExecuteStep");
}
我想知道这是否“足够好”并且不会隐藏任何真正的异常。不是世界上最健壮的代码,但是没有发现比读取堆栈跟踪更好的方法来弄清这是否是Asp.Net本身的异常。