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

前端之家收集整理的这篇文章主要介绍了在ASP.NET Web应用程序中有未处理的异常是否可以接受?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在与第三方供应商合作,他们提供了一个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应用程序开发人员似乎不愿意处理这些错误,原因我并不理解.他们的方法是限制谷歌博客,直到错误停止发生(谷歌索引非常攻击,每天产生大约5,000次点击).虽然我接受限制GoogleBot会起作用,但对我来说这似乎是个问题.我一直认为未处理的异常是错误. Web应用程序不应该处理这些错误吗?允许HTTP / 500发生是可以接受的吗?网络开发人员在想什么?

解决方法

这里真的有几个问题:如果网站显示异常(否),网站是否应显示用户更友好的内容(是),如果网站无法继续向Googlebot返回500错误(可能),你是否应该要求Googlebot放慢速度(是),如果你每天发送500封例外电子邮件而没有限制或摘要(可能不会).

更多详情:-

使用google.com/webmasters,您可以请求Google不那么积极地为您的网站编制索引.

您永远不应该向用户显示异常,您应该始终捕获它并显示友好的错误页面但是当您显示页面时需要小心保留HTTP代码(例如404或500),因为如果您返回包含代码页面= 200然后该错误页面将进入搜索引擎索引.

任何错误处理程序都应该限制发生错误时发送电子邮件的频率.

一个编写良好的错误处理程序还应该允许抑制你知道会发生的错误 – 例如某些搜索引擎坚持要求不存在的页面.

如果谷歌可以让你进入速率限制的情况,那么来自用户的高流量也许可以做同样的事情,所以整体来说听起来你也需要某种缓存解决方案.

猜你在找的asp.Net相关文章