在FaultContract的方法中抛出FaultException不起作用

时间:2013-01-23 03:01:26

标签: c# wcf service faultexception faultcontract

我一直在阅读有关FaultContract的内容并认为它很方便。所以我用

来装饰我的一些方法
  [OperationContract]
  [FaultContract(typeof(MyFault)]
  string DoTransform(string somethingUseless);

然后在服务器代码中,当给定某些输入时,我会逐步抛出FaultException。

在客户端,所有CodeDom都是使用SvcUtil重新生成的,我在服务客户端等中看到了FaultContracts。

在Client表单上,我有一个try / catch来捕获FaultException。

问题是,当我使用故意触发错误的数据调用操作契约时,服务会抛出一个新的FaultException。我期待它被客户端捕获但是没有,相反我得到了一个未处理的CommunicationException。

它在正常输入下工作正常但是当我给出在相同操作契约上运行FaultContract的输入时,而不是获得FaultException我得到一个CommunicationException。如果我删除有条件地抛出异常的'if'语句,那么一切都很好。

我正在做所有的事情 http://msdn.microsoft.com/en-us/library/ms752208.aspx 只是用不同的名字。因此,如果我不对它做任何事情它工作正常,如果另一方面我使用它:

 long digits;
 if (!long.TryParse(data, out digits))
    throw new FaultException<MyFault>(new MyFault("dummy thing"));

然后当满足条件(数据未解析为长)时,我得到一个CommunicationException。

我错过了一些重要或微妙的事实吗?

0 个答案:

没有答案