我部署了一个只有一个实例的 Azure 云服务 WebRole WebAPI。我注意到,如果我等待一些空闲时间(没有 HTTP 请求),那么稍后服务就死了,并且对它的每个请求都会导致以下响应:
{
Message: "An error has occurred."
}
Azure 管理仪表板显示实例状态为正在运行。远程桌面显示应用程序池和网站都在运行,并且所有需要的服务都在运行。
我在任何地方都找不到任何相关的错误消息...
对于上述情况,我发现的唯一解决方案是重新启动实例 VM。
由于我假设上面是空闲时间的结果,所以我查看并发现默认情况下应用程序池本身的空闲超时属性设置为20分钟,导致空闲超时后关闭应用程序池内的工作进程. 我设法通过手动触发应用程序池回收来重现问题而无需等待超时。
我认为我的服务存在某种问题,无法从关闭中正确恢复。作为证明,一个干净的开箱即用的服务项目并没有产生相同的行为。
什么会导致这样的问题?
谁能指出我调试的正确方向?
我在哪里可以找到有用的错误跟踪消息?
编辑:
我正在为 IoC 使用 Autofac,我突然想到问题可能是 IoC 在回收后以某种方式被清除。我正在Application_Start()
.
会不会是问题?Global.asax.cs