- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当前,我具有以下代码段来处理Global.asax Application_Error()中的错误:
var ex = server.GetLastError();
server.ClearError();
if (ex is HttpUnhandledException && ex.InnerException != null)
ex = ex.InnerException;
Trace.TraceError(ex.ToString());
// send some output to the user that they should contact support etc
最佳答案
您的方法很好:您记录了未处理的错误。这样做的目的是清除错误。人类无法避免错误,但是我们可以快速修复它们。
首先记录所有错误。然后,将单个错误或您了解的错误类别列入黑名单是无用的。在几次迭代中,您将获得一个相当干净的日志。
删除所有不可操作的内容。 例如,您的网站将具有执行疯狂请求的机器人,等等。无需采取任何措施,因此您可以将它们从日志中删除。
我建议您也将看似无用的错误记录到补充日志文件中,以便您可以不时滚动浏览以确保一切正常。
您特别想知道通常无害的错误的频率。每天三个僵局对您来说可能很酷,但300个僵局可能太多了。
我将概述您的全局错误处理程序可能包含的内容:
static bool IsExceptionIgnored(Exception exception)
{
if (exception == null) throw new ArgumentNullException("exception");
var nestedExceptions = exception.GetExceptionChain();
return nestedExceptions.Any(ex =>
ex is ViewStateException ||
ex.Message.Contains("Timeout") ||
ex.Message.StartsWith("Invalid viewstate") ||
ex.Message.Contains("potentially dangerous") ||
ex.Message.Contains("The remote host closed the connection") ||
ex.Message.Contains("System.Web.UI.ViewStateException: Invalid viewstate") ||
ex.Message.Contains("System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError") ||
ex.Message.Contains("0x80070032") ||
(ex is HttpException && ((HttpException)ex).GetHttpCode() == 404) ||
ex is ThreadAbortException);
}
public static IEnumerable<Exception> GetExceptionChain(this Exception exception)
{
if (exception == null) throw new ArgumentNullException("exception");
for (var current = exception; current != null; current = current.InnerException)
yield return current;
}
关于asp.net - 在Global.asax Application_Error()中记录什么以及忽略什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19376795/
在 Webform1.aspx.cs 中: protected void Page_Load(object sender, EventArgs e) { throw new Exception
如果 URL 存在,我有一些代码可以显示按钮: try { string dashboardURL = Config.RootUrl + "/Dashboard/Default.aspx";
我的 Global.asax 文件中有以下代码: protected void Application_Error() { var exception = Server.GetLastErro
我正在尝试运行一个将异常记录到数据库的 ASP.NET 应用程序。我正在使用 Application_Error 来捕获异常。 在添加连接字符串之前,只是为了测试我的代码(Logger 类和 Glob
我使用 Application_Error 来处理 ASP.NET MVC 3 应用程序中的错误。今天我注意到,对于一个特定的错误情况,此方法被调用了两次:请求带有前导下划线的资源时,例如_ViewS
最近我们开始发现一个问题,即在与处理请求的线程不同的线程上调用 Application_Error 事件处理程序(对于 HttpApplication.Error )。 我们最近改变的事情: 32 位
Application_Error 未在生产服务器上触发。但它在我们的本地服务器和其他亚马逊服务器上工作。我们的本地服务器有Windows7操作系统和IIS(7.5)版本,但生产服务器有Windows
所以我有一个全局错误处理程序,它会在我的应用程序出现错误时发送电子邮件。这很好用,但是,有一些错误(即可怕的“对象引用未设置到对象的实例”错误)极难追踪。我有一个简洁的函数,可以为我将序列化模型转换为
我正在尝试进行重定向,我有一个单例类,它是我的配置类,获取关于它的信息并使用我的连接字符串,这些数据我保存在一个加密文件中,我正在使用 session-per-请求,然后在安装之前我需要检查 sess
我必须在 Application_Error 处理程序中进行异步调用。所以我用 async 关键字定义了这个处理程序,但它不会在异常时触发。 protected async void Appl
如何从 Application_Error 重定向到另一个页面? 目前我在做 Response.Redirect("~/Account/LogOn"); 但我想做一些类似RedirectToActio
在过去的 2 周里,我遇到了一个我无法解决的案例,也许你们已经解决了同样的问题或者听说过/阅读过它并且可以帮助我。 我有一个在我的机器和其他机器上运行的 ASP.NET 项目,每次我尝试调节 Quer
我有一个名为 LogErrorAttribute 的全局异常过滤器: public class LogErrorAttribute : IExceptionFilter { private I
我正在尝试找出如何从 MVC 中的 Application_Error 方法创建异步调用。 我有一个我编写的电子邮件 dll,它使用 Smtp 客户端通过异步调用发送电子邮件。 问题是,当我在我的 d
我有一个 Asp.Net 4.0 Web Forms 应用程序在某些时候抛出以下错误 “Server Error in ‘/MySiteDev’ Application” . 这个错误只是偶尔出现。此
在 VS2010 SP1 中调试我的 MVC 4 应用程序时,Application_Error()处理程序被调用,但 Server.GetLastError()为空。 protected void
我使用 Application_Error 处理程序来记录所有未处理的异常;一般来说,它运行良好,但总是会跳过 404 错误。有什么想法可能是什么原因吗? 最佳答案 实际上,这是因为您的网络服务器返回
我想在全局范围内捕获这些类型的错误,以便我可以将它们记录到数据库中并向用户显示一条友好的消息:500、403 和 404。我正在使用 Log4Net 处理错误。 void Application_Er
我试图找到一个在所有 Application_Error 事件处理程序之后立即触发的事件,以便我可以修改发送的响应(弄乱状态代码和“位置” header 并创建一个新的正文)使用自定义 HttpMod
我正在尝试在我的 MVC 应用程序中实现全局错误处理。 我的 Application_Error 中有一些逻辑重定向到 ErrorController 但它不起作用。 我在 Global.aspx 的
我是一名优秀的程序员,十分优秀!