我已经为我的操作契约设置了属性[FaultContract(typeof(ExceptionDetail))]。当我尝试将服务添加到客户端应用程序时,我收到此错误- "Custom tool error: Failed to generate code for the service reference 'ServiceReference1'. Please check other error and warning messages for details."
但是当我注释掉wcf属性时,我可以将FaultContract服务引用添加到我的客户端应用程序中。
发布于 2010-03-19 06:18:57
使用FaultContracts的意义在于,首先可以从服务传回SOAP错误,而不会中断服务器和客户端之间的通信通道(优雅且可互操作地处理.NET异常等错误条件),其次,使用FaultContracts,服务器可以抛出类型化错误(FaultException<T>),客户端可以捕获这些错误。
如果您希望或需要实现真正的互操作,则需要:
如果你控制了线路的两端,两端都是.NET,那么你可以通过一个步骤来简化这一步:在服务器上,处理所有的.NET异常,并将它们转换成例如FaultException<ArgumentOutOfRangeException>,也就是说,创建一个“.NET exception的错误”,然后在客户端,捕获那些键入的FaultException并处理它们:
[FaultContract(typeof(ArgumentOutOfRangeException)]
[OperationContract]
public void CallService(.......)然后在您的实现中,使用以下代码:
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....
}发布于 2010-03-19 01:27:59
删除该FaultContract,改为配置includeExceptionDetailInFaults
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Behavior">
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>发布于 2010-03-19 01:24:33
使用http://msdn.microsoft.com/en-us/library/ms732023.aspx中的服务跟踪查看器工具查看活动跟踪。
https://stackoverflow.com/questions/2470607
复制相似问题