WCF错误未正确传播到客户端

时间:2010-04-09 15:45:22

标签: wcf fault contracts

我们有以下WCF服务合同:

[ServiceContract(Namespace = "http://example.com", Name = "Service1")]
public interface IService1
{      
  [OperationContract]
  [FaultContract(typeof(Fault1))]
  ValidateUserResult ValidateUser(
                       string username, 
                       string password);
}

[ServiceContract(Namespace = "http://example.com", Name = "Service1")]
public interface IService1Async
{      
    [OperationContract(AsyncPattern = true)]
    [FaultContract(typeof(Fault1))]
    IAsyncResult BeginValidateUser(
                       string username, 
                       string password, 
                       AsyncCallback callback, 
                       object userState);

    ValidateUserResult EndValidateUser(IAsyncResult asyncResult);
}

[DataContract(Namespace = "http://example.com")]
public class Fault1
{
}

我们在客户端调用ValidateUser的异步版本,我们在服务器上抛出FaultException<Fault1>,但所有客户端都收到FaultException

未收到合同规定的故障的原因是什么?

2 个答案:

答案 0 :(得分:1)

我们现在找到了原因。我们使用ProvideFault方法从服务行为生成错误。我们在IErrorHandler.ProvideFault in msdn

使用类似于示例的代码

唯一的区别是我们没有在Message.CreateMessage超载上传递正确的操作。我们复制了在我们手动抛出错误和瞧的情况下生成的内容。

我没有给出最后细节的借口: - )

答案 1 :(得分:0)

您能告诉我们您的电话的捕获声明吗?合同和一切对我来说都很好......

您检查故障的顺序是什么?在检查FaultException<Fault1>FaultException之前,您必须检查CommunicationException - 您是否有可能以某种方式混淆该订单?

调用方法的同步版本时是否有效?