奇怪的是我在谷歌上找不到任何东西。在做常规异常时,你会创建一个MyCustomException : Exception
,我认为同样适用于ExceptionFaults。
当有人使用无效的api密钥调用我的服务时,我想抛出一个InvalidApiKeyExceptionFault。我似乎无法在网上找到如何设置它并让客户端能够捕获它的示例(可能是某个地方将其包含在WSDL中)。
有什么建议在哪里看,或者我在尝试一些不可能的事情?
答案 0 :(得分:5)
您应该使用FaultException<TDetail>
并将您的特定信息放入可序列化的TDetail
类型中。
您的服务合同应fault contract指定TDetail
类型。
此技术使您能够以可互操作的方式传达错误信息,包括对不了解.NET异常的客户端。
如果由于某种原因您不想使用故障合同,则可以考虑使用非通用FaultException,并在故障原因和/或故障代码/子代码中传达有关错误的其他信息。