C# 如何允许iErrorHandler在WCF中处理AccessViolationExceptions?

C# 如何允许iErrorHandler在WCF中处理AccessViolationExceptions?,c#,.net,wcf,com,windows-services,C#,.net,Wcf,Com,Windows Services,当然,我们必须避免捕获和尝试处理AccessViolationExceptions(AVE)。但是,在我当前的例子中,异常是从COM+托管组件引发的,该组件终止引发异常的进程,因此正确清理。但是,使用上述COM+组件的承载WCF的windows服务接收导致服务崩溃的冒泡AVE 现有的处理程序似乎无法发射/检测AVE 有没有办法让WCF iErrorHandler捕捉AVE?作为一种变体,您可以尝试添加一个处理程序,以便再次重新启动服务 或者,您可以在一个(“主”)AppDomain中运行主win

当然,我们必须避免捕获和尝试处理AccessViolationExceptions(AVE)。但是,在我当前的例子中,异常是从COM+托管组件引发的,该组件终止引发异常的进程,因此正确清理。但是,使用上述COM+组件的承载WCF的windows服务接收导致服务崩溃的冒泡AVE

现有的处理程序似乎无法发射/检测AVE


有没有办法让WCF iErrorHandler捕捉AVE?

作为一种变体,您可以尝试添加一个处理程序,以便再次重新启动服务


或者,您可以在一个(“主”)AppDomain中运行主win_服务,并在另一个(“子”)AppDomain中托管WCF服务。通过这种方式,您可以卸载(重新加载)子进程而不影响主进程。

iErrorHandler不可能捕获类似于AccessViolationExceptions(SEHExceptions)的异常。

请参阅,我主要关心的是其他正在进行的wcf调用,这些调用基本上由于不同服务上的EAV而异常终止。使用这两种方法,我需要强制终止运行WCF服务的应用程序域。这就是我想要避免的。我已在第一次失败时重新启动服务。