在摆弄WCF错误契约时,我希望能够在我的故障中重用我的自定义Exception继承树作为TDetail。在开始工作之后,我开始思考这个问题(是的,在完成工作之后,你知道这是思考的最佳时机)。我注意到客户端获取了序列化为TDetail的异常的完整堆栈跟踪。正在使用.net异常作为WCF故障合同存在安全风险?
现在我在想这就是你不打开<servicedebug includeExceptionDetailInFaults="true" />
的确切原因。但我不确定。作为TDetail使用我的例外是否会对我造成安全风险?我的其他选择是什么?
我已经尝试在我的自定义异常上使用DataContracts来做这件事,但事实证明,您不能以这种方式混合DataContracts和ISerializable对象。所以为了实现这个,我应该重新实现自定义异常的ISerializable.GetObjectData方法,或者实现等价的FaultContracts。鉴于我喜欢我的Intellisense(在实现GetObjectData时没有获得),并且我喜欢对DataContracts的WCF工具的神奇支持,所以我使用后者。 – dvdvorle 2012-02-21 08:18:10