遇到访问冲突时,w3wp.exe会反复崩溃并重新启动,直到应用程序池停止
我使用WebHttp绑定(使用
[WebGet]
)在IIS 7.5(Windows Server 2008 R2)中托管了CLR 4 WCF服务。该服务调用以C ++(Visual Studio 2010)实现的非托管组件。
我故意在非托管组件中添加了访问冲突(通过反复调用指针上的delete
,通过删除指针调用方法等)来测试转储文件生成设置。访问冲突崩溃了w3wp.exe进程,考虑到CLR 4中的“损坏状态异常”,这并不奇怪。但是,当进程重新启动时(由于IIS中的预热和永远在线设置),同样的请求似乎被重放到服务,以便它再次崩溃w3wp.exe进程。几次(由“最大故障”应用程序池设置控制)后,应用程序池将停止。
我正在使用浏览器作为测试客户端,当重启序列正在进行时,请求仍在进行中。当应用程序池停止时,请求返回503 Service Unavailable
。
我可以通过在代码周围放置try...catch
块并使用[HandleProcessCorruptedStateExceptions]
属性来解决此问题。当我这样做时,w3wp.exe进程不会崩溃。但是,这不是所希望的行为 - 我希望进程崩溃(访问冲突或内存损坏已经足够糟)但我希望它重新启动到干净状态而不重放请求。
我无法使用BasicHttp绑定重现问题。
没有找到相关结果
已邀请:
1 个回复
犁攀富