在ASP.NET Web应用程序中有未处理的异常是否可以接受?

Tim*_*ong 7 asp.net asp.net-mvc iis-7

我正在与第三方供应商合作,他们提供了一个ASP.Net Web应用程序.该网络应用程序每天产生大约200个未处理的例外,最终作为我的收件箱中的电子邮件.经过调查后发现,大多数这些错误都是由GoogleBot网络抓取工具索引网站并触发对另一个第三方网络服务的访问而触发的,这会对请求进行速率限制.当超出请求限制时,第三方Web服务拒绝该请求,这将导致Web服务器中的未处理异常和HTTP/500状态代码.例外情况如下:

Exception: Exception of type 'System.Web.HttpUnhandledException' was thrown., Stack Trace:    at System.Web.UI.Page.HandleError(Exception e)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at ASP.views_products_detail_aspx.ProcessRequest(HttpContext context)
   at System.Web.Mvc.ViewPage.RenderView(ViewContext viewContext)
   at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
   at System.Web.Mvc.ControllerActionInvoker.c__DisplayClass11.b__e()
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)

Web应用程序开发人员似乎不愿意处理这些错误,原因我并不理解.他们的方法是限制谷歌博客,直到错误停止发生(谷歌索引相当aggressivley,每天产生约5,000次点击).虽然我接受限制GoogleBot会起作用,但对我来说这似乎是个问题.我一直认为未处理的异常是错误.Web应用程序不应该处理这些错误吗?这是以往任何时候都可以接受的允许HTTP/500的情况发生?网络开发人员在想什么?

Ste*_*dit 2

不,这是不可接受的。Web 应用程序至少应该捕获 global.asax.cs 中的异常并对其进行合理的处理。

  • @jfar:我相信我建议的方法可以通知您所有 200 个例外情况,但只需 1 封电子邮件即可做到这一点。 (2认同)