WCF:在嵌套服务调用中保留内部异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WCF:在嵌套服务调用中保留内部异常相关的知识,希望对你有一定的参考价值。

我有一个以这种方式运行WCF调用的解决方案:

Web API - (WCF) - >主服务 - (WCF) - >子服务。

假设Sub服务抛出异常,我希望主项目也抛出异常。最后,我想将完整的堆栈跟踪报告给主项目。

问题是我没有设法让被叫子服务堆栈跟踪超过1 WCF调用。

如果可能的话,我希望在抛出异常时有类似的东西:

SubService.ThrowException()
SubService.ProcessRequest()
==== End of inner exception ====
MainService.CallSubService()
...
MainService.ProcessRequest()
==== End of inner exception ====
MainProject.CallMainService()
...

.

[ServiceContract]
public interface IMainService
{
    [OperationContract]
    [FaultContract(typeof(System.Exception))]
    JobInformation ProcessJob(JobInformation info);
}

[ServiceContract]
public interface ISubService
{
    [OperationContract]
    [FaultContract(typeof(System.Exception))]
    JobInformation ProcessJob(JobInformation info);
}


public class SubServiceClient
{    
    public JobInformation ProcessJob(JobInformation info)
    {
        return (Service.ProcessJob(info));
    }
}
答案

最简单的方法:我将使用一种解决方法。

[ServiceContract]
public interface IProcessingService
{
    [OperationContract]
        JobInformation ProcessJob(JobInformation info, out Exception exception);
}

但请注意序列化异常的大小。您可能必须配置WCF以接受更大的数据。

以上是关于WCF:在嵌套服务调用中保留内部异常的主要内容,如果未能解决你的问题,请参考以下文章

从 Windows 服务调用时出现 WCF 安全异常

对 WCF 服务的异步调用不会保留 CurrentCulture

对 WCF 服务的异步调用不会保留 CurrentCulture

无法建立 SSL 连接,请参阅内部异常

WCF 捕获异常“服务器没有提供有意义的回复..”

从 MVC 项目调用 WCF 服务时出错