如何捕获WCF服务激活异常?

3
我有一个包含WCF服务的Web应用程序项目。当我在Visual Studio 2010调试器下使用ASP开发服务器运行我的Web项目时,使用“调试->选项->断点”,勾选“CLR异常抛出”并取消勾选“启用我的代码”,我可以捕获ServiceActivationException异常并获得详细解释,当我的WCF服务未启动时,这个异常也会被记录在WCF跟踪中。
然而,我尚未找到在代码中捕获此异常的方法。如何捕获它呢?
1个回答

0

如果你所说的“代码”只是指捕获异常以进行日志记录,那么可以尝试看看是否适用于你的实现IErrorHandler。另一个选择可能是自定义服务主机,但如果这样做不起作用,那么除了在Visual Studio调试器之外,你几乎无法捕获它。当初始化服务实例时,在WCF框架内部会发生该异常。因为它发生在你的服务代码运行之前,所以你的代码无法捕获它。


1
这种重要的异常没有传递到未处理异常事件处理程序中,而是在某个地方被静默处理,这非常不寻常。 - Alex Burtsev
这完全取决于异常在WCF初始化序列中发生的位置。如果IErrorHandler实现没有捕获它,那么它会在任何自定义扩展被加载之前发生。您尝试过自定义ServiceHost选项吗? - Sixto Saez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接