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