我已经[FaultContract(typeof(ExceptionDetail))]为我的操作合同设置了属性.当我尝试将服务添加到客户端应用程序时,我收到此错误 - "Custom tool error: Failed to generate code for the service reference 'ServiceReference1'. Please check other error and warning messages for details."
但是当我注释掉FaultContract属性时,我能够在我的客户端应用程序中添加wcf服务引用.
具有FaultContracts的关键是首先可以从服务中传回SOAP错误,这不会破坏服务器和客户端之间的通信通道(处理错误条件,例如优雅和互操作的.NET异常),其次,使用FaultContracts,您的服务器比抛出类型的错误(FaultException<T>)和您的客户端可以捕获它们.
如果您想要或需要真正可互操作,您需要:
如果您控制线的两端并且两端都是.NET,那么您可以通过一步简化:在服务器上,处理所有.NET异常并将其转换为例如FaultException<ArgumentOutOfRangeException>,即创建"故障(无论如何). NET异常)"然后在客户端上,捕获那些类型化的FaultException并处理它们:
[FaultContract(typeof(ArgumentOutOfRangeException)]
[OperationContract]
public void CallService(.......)
Run Code Online (Sandbox Code Playgroud)
然后在您的实现中,使用此:
try
{
clientProxy.CallService();
}
catch(FaultException<ArgumentOutOfRangeException> ex)
{
// handle the most specific exception first
}
catch(FaultException ex)
{
// handle all other, unspecific server faults
}
catch(CommunicationException ex)
{
// handle all other, client-proxy related WCF errors
}
catch(Exception ex)
{
// handle anything else....
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6024 次 |
| 最近记录: |