我正在尝试使用Tcp绑定将自定义 FaultContract 从WCF服务抛出到ASP.NET应用程序。
我已经定义了错误合同 -
[DataContract]
public class CustomFault
{
[DataMember]
public string SomeData { get; set; }
public CustomFault(string someData)
{
SomeData = someData;
}
}
我已在服务操作中指定了错误合同:
[OperationContract]
[FaultContract(typeof(CustomFault))]
void AddProductToBasket(Guid basketId, int productId, decimal quantity, int uomId);
我扔它像:
throw new FaultException<CustomFault>(new CustomFault("LowStock"));
试图像这样抓住它:
try
{
// Do service operation.
}
catch (FaultException<CustomFault> fault)
{
// Successfully caught typed FaultException<CustomFault>
throw;
}
catch (Exception ex)
{
// Failed, caught FaultException<ExceptionDetail>
throw;
}
但是捕获总是捕获FaultException<ExceptionDetail>
类型的东西,我相信当你指定&lt; serviceDebug includeExceptionDetailInFaults =“true”/&gt; 时会发生这种情况,我已经为其他例外做了,但是为操作指定了FaultContract,它应该使用自定义FaultContract而不是......
有人有任何想法吗?