0

根据 .NET 框架的版本,在处理 WCF 服务抛出的 FaultExceptions 时,我们的客户端会遇到不同的行为。

该服务定义了一个自定义故障:

[DataContract]
public class MyFault
{
    [DataMember]
    public int MyId { get; set; }
}

服务接口:

[ServiceContract]
public interface IMyService
{
    [OperationContract]
    [FaultContract(typeof(MyFault))]
    MyResponse DoSomething(MyRequest request);
}

客户端处理异常:

try 
{
    client.DoSomething(myrequest);
} 
catch (FaultException<MyFault> ex) 
{
    ...
}

.NET 4.5 机器上,他将识别故障FaultException<MyFault>并按预期进行处理。

但是,在.NET 4 机器上,他会将故障视为FaultException(非通用),因此永远无法达到问题。

我们捕获了机器上的流量,以查看通信是否存在差异。请求和响应都是相同的。我们甚至将 .NET 4 机器更新为 .NET 4.5(没有更新任何其他软件或我们的客户端软件)并且行为发生了变化。

有什么合乎逻辑的解释吗?

4

0 回答 0