1

我扔了一个新的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 数据需要很长时间,这很可疑,即使我连续更新两次。

4

1 回答 1

2

我已经解决了这个问题,我留下这个问题是为了阻止其他人有同样的头痛。

这是由 ServiceFault(我的自定义故障类)没有正确序列化引起的。

原始类有两个属性,一个string和一个int用 getter 和一个私有 setter 定义的属性。

其中的某些部分使它非常混乱,因此我将它们设置为简单的字段并重建/更新了服务参考。它立即工作没有问题。

所以要小心你的 DataContracts 以确保它们可以正确序列化。

于 2013-06-03T14:48:39.207 回答