我扔了一个新的FaultException("error");
,它带着文本“错误”返回给我的客户。
现在我更进一步,我想使用 aFaultContract
来正确地做到这一点。
因此,我创建了一个名为 ServiceFault 的[DataContract]
属性,它只有一个string ErrorMessage
属性。
我的代码是这样的:
ServiceFault serviceFault = new ServiceFault("Broken.");
throw new FaultException<ServiceFault>(serviceFault);
我制作了一个控制台应用程序来测试它,并使用 try catch 来捕获错误异常,但我只是得到:
调用服务失败。可能原因:服务离线或无法访问;客户端配置与代理不匹配;现有代理无效。有关更多详细信息,请参阅堆栈跟踪。您可以尝试通过启动新代理、恢复到默认配置或刷新服务来恢复。
我想它应该说发生了错误异常,但事实并非如此,我只是明白了。
我会遗漏一些明显的东西吗?也许是配置选项?我已经使用这个例子实现了它:http: //msdn.microsoft.com/en-us/library/ms752208.aspx
我应该补充一点,我已将其放入[FaultContract(typeof(ServiceFault))]
ServiceContract。
另外需要注意的是:如果我只是抛出一个常规的 FaultException,客户端会正确处理它。
当我抛出自定义故障异常时,客户端更新服务/检索 MEX 数据需要很长时间,这很可疑,即使我连续更新两次。