在.NET 4中,FaultExceptions的处理方式与在.NET 4.5中的处理方式不同吗?

时间:2013-04-18 08:58:11

标签: c# wcf .net-4.0 .net-4.5 faultexception

在处理由WCF服务引发的FaultExceptions时,我们在客户端遇到不同的行为,具体取决于.NET框架的版本。

该服务定义了一个自定义错误:

[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(不更新任何其他软件或我们的客户端软件),行为也发生了变化。

有合理的解释吗?

0 个答案:

没有答案