为什么 WCF 故障异常在跨越两个边界后不保留其详细信息?
当跨边界引发错误异常时,它可以采用类型参数来跨 WCF 边界传递详细信息对象。但是,我注意到,当错误异常跨越两个边界时(要么因为它被重新抛出,要么因为异常只是在堆栈中冒泡),详细信息对象就会丢失。这是设计使然吗?如果是这样,为什么?
如果您想了解我在说什么,我有一个代码存储库,可以显示此操作:
When a fault exception is thrown across a boundary, it can take a type parameter, to pass a detail object across the WCF boundary. However, I have noticed that when a fault exception crosses two boundaries (either because it is rethrown, or because the exception just bubbles up the stack), the detail object is lost. Is this by design? If so, why?
I have a code repository that shows this in action if you'd like to see what I'm talking about:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
非常有趣,它看起来确实像是 WCF 中的一个错误。如果我将绑定(和地址)从命名管道切换为使用 HTTP,它实际上可以工作。我将向产品团队提交错误。感谢您报告此问题!
顺便说一句,这是一个独立的控制台代码,可以重现此问题。
Very interesting, it surely looks like a bug in WCF. If I switch the binding (and the address) from named pipes to use HTTP it actually works. I'll file a bug to the product team. Thank you for reporting this issue!
BTW, here's a stand-alone, console code which reproduces this issue.
我尝试了你的示例代码 - 它对我来说效果很好。我运行了三个实例,并将内部托管在一个实例中,将外部托管在另一个实例中,然后从第三个实例开始,我将其称为外部和内部。在这两种情况下我都看到了详细消息。
I tried your sample code - it worked fine for me. I ran three instances and hosted inner in one, outer in another and then from the third I called outer and inner. In both cases I saw the detail message.