当前位置: 首页 > 编程语言 > C#

Application_Erroringlobal.asaxUncaughtErrorinWebAPI分享

时间:2023-04-10 16:52:17 C#

application_Erroringlobal.asaxUncaughtErrorinWebAPI对于我正在开发的项目,我们正在实现的一件事是,我们在一些代码中编写的旧的ASP.NET和MVC项目团队-向开发团队发送电子邮件的Application_Errorexception捕获器。异常体验和最相关的细节。它是这样的:Global.asax:protectedvoidApplication_Error(objectsender,EventArgse){Exceptionex=Server.GetLastError();字符串路径=“不适用”;if(senderisHttpApplication)path=((HttpApplication)sender).Request.Url.PathAndQuery;stringargs=string.Format("路径:{0}",path);//生成HTML格式异常转储的自定义代码stringmessage=Email.GenerateExceptionMessage(ex,args);//向开发团队发送电子邮件的自定义代码。Email.SendUnexpectedErrorMessage("SomeApp",message);然而,一个“小”问题-当我故意让部分代码抛出异常以测试这个时使用这种机制......publicstaticvoidGetMuffinsByTopping(stringtopping){thrownewException(“测试异常!”,newException("测试内部异常!!!"));//实际的仓库代码是不可达的,而这个测试代码在那里}前端JavaScript立即拦截HTTP500请求,但没有命中上面提到的global.asax.cs代码(我在第一个执行行设置了断点的方法。)问题:有什么方法可以让“旧的”Application_Error处理程序发送错误电子邮件,以便我们的开发团队可以更轻松地调试我们的应用程序?将您的错误处理逻辑从Application_Error抽象到它自己的函数中。创建WebAPI异常过滤器。//使用WebAPI管道注册您的过滤器GlobalConfiguration.Configuration.Filters.Add(newLogExceptionFilterAttribute());//创建过滤器publicclassLogExceptionFilterAttribute:ExceptionFilterAttribute{publicoverridevoidOnException(HttpArrcontextLogExecutedContextErrptext(LogService);}}//在global.asax或global.asax.csprotectedvoidApplication_Error(objectsender,EventArgse){Exceptionex=Server.GetLastError();ErrorLogService.LogError(ex);}//用于记录错误的公共服务publicstaticclassErrorLogService{publicstaticvoidLogError(Exceptionex){//向开发人员发送电子邮件,呼叫消防部门,记录到数据库等.}}WebAPI中的错误不会触发Application_Error事件。但是我们可以创建一个exceptionfilter并注册它来处理错误。另见ASP.NETWebAPI2中的全局错误处理。以上是C#学习教程:global.asax中的Application_Error,并没有捕获WebAPI中错误分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: