我有一个以这种方式运行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以接受更大的数据。