我们有以下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
。
未收到合同规定的故障的原因是什么?
答案 0 :(得分:1)
我们现在找到了原因。我们使用ProvideFault方法从服务行为生成错误。我们在IErrorHandler.ProvideFault in msdn
使用类似于示例的代码唯一的区别是我们没有在Message.CreateMessage
超载上传递正确的操作。我们复制了在我们手动抛出错误和瞧的情况下生成的内容。
我没有给出最后细节的借口: - )
答案 1 :(得分:0)
您能告诉我们您的电话的捕获声明吗?合同和一切对我来说都很好......
您检查故障的顺序是什么?在检查FaultException<Fault1>
或FaultException
之前,您必须检查CommunicationException
- 您是否有可能以某种方式混淆该订单?
调用方法的同步版本时是否有效?