【发布时间】:2016-03-17 08:35:44
【问题描述】:
我使用的是 Windows 7,IIS 7.5.7600.16385,目前已安装 .NET 4.6.1,我们有一个 MVC 应用程序。
几天前,我们的应用程序出现了一些奇怪的行为。不幸的是,在 Application_Start 内部调用的服务不可用,并且内部引发了未处理的异常。我的预期行为是 Application_Start() 被下一个请求再次调用,或者下一个请求直接使用 Application_BeginRequest() 开始,就像What happens if an unhandled exception is thrown in Application_Start? 中提到的那样。
不幸的是,我得到以下结果:
如果 Application_Start() 内部出现异常,我在第一次请求时收到错误 500。没关系。
在此之后,所有其他请求都返回第一个请求时引发的异常。我通过在本地环境中抛出带有时间戳的异常来验证它。每个响应都包含带有第一个请求的时间戳的异常,并且 HTTP 响应仍然是 500。它不依赖于调用哪个 url。在我们的代码中没有遇到断点,但 IIS 日志显示了请求。答案似乎缓存在某处。
我个人喜欢这种行为,因为应用程序不会响应具有未定义初始化状态的请求。
是的,我知道在 Application_Start() 中调用其他服务资源不是最好的主意,我们下次可能会删除它:)
我的问题:
是否可以配置在 Application_Start() 抛出异常时的行为?
也许有人知道这种行为是什么时候改变的,还是已经存在很长时间了?
【问题讨论】:
标签: c# asp.net iis unhandled-exception application-start