如果在Application_Start中抛出未处理的异常会发生什么?

And*_*nea 14 asp.net iis exception application-start unhandled-exception

...是否会再次运行Application_Start方法以用于下一个请求?

它是否依赖于ASP.NET版本,托管服务器版本和/或其他上下文?

我试图确定在那里加载关键组件是否是一件好事.例如,数据访问程序集对整个应用程序的运行至关重要.未能加载此类程序集将使后续请求无效.

Vin*_*ayC 9

Application_Start将仅针对每个Web应用程序触发一次,因此在您的情况下,后续请求不会再次启动.

通常,我更喜欢在try-catch中的应用程序启动时放入一次启动代码,如果有异常,则设置全局错误标志.在每个BeginRequest中,将检查该标志,如果已设置,则会将用户重定向到自定义错误页面,指示该站点已关闭,请与管理员联系.

  • @felickz我可以在两个不同的主机上确认这两个案例 - 你的和Vinay的.在IIS6 + CLR4上,App_Start仅被调用一次.在IIS8 + CLR4.5上,每次发生异常时都会调用App_Start.所以我猜测用IIS或CLR版本改变了行为. (4认同)