查找负责WCF通信异常的Web方法

时间:2013-04-12 08:27:30

标签: c# wcf

我正在尝试找到Web方法的名称(Web应用程序有数百个),这些方法负责抛出间歇性的System.ServiceModel.CommunicationException例外。

我有一个可以捕获异常的错误处理程序(IErrorHandler),但是异常信息并没有指向异常的来源。

有没有办法确定哪个Web方法负责该异常?

唯一的堆栈跟踪信息如下:

  

System.ServiceModel.CommunicationException:从管道读取错误:无法识别的错误109(0x6d)。 ---> System.IO.PipeException:从管道读取错误:无法识别的错误109(0x6d)。
     at System.ServiceModel.Channels.PipeConnection.OnAsyncReadComplete(Boolean hasResult,Int32 error,Int32 numBytes)
     ---内部异常堆栈跟踪结束---
     在System.Runtime.AsyncResult.End [TAsyncResult](IAsyncResult结果)
     at System.ServiceModel.Channels.TransportDuplexSessionChannel.TryReceiveAsyncResult.End(IAsyncResult result,Message& message)
     在System.ServiceModel.Dispatcher.DuplexChannelBinder.EndTryReceive(IAsyncResult result,RequestContext& requestContext)
     在System.ServiceModel.Dispatcher.ErrorHandlingReceiver.EndTryReceive(IAsyncResult result,RequestContext& requestContext)

谢谢

1 个答案:

答案 0 :(得分:0)

Visual Studio 2010可以在调试时捕获异常。您可以捕获任何一组例外或全部。也可以在执行抛出异常的操作之前启用捕获。

假设您使用的是visual studio 2010:

  1. 在顶部菜单栏中,单击“调试”,然后单击“例外”。
  2. 点击打开Common language runtime exceptions部分。
  3. 向下滚动,直到找到System.ServiceModel,同时点击此处。
  4. 在相应例外的复选框中添加勾号
  5. 如果可能的话,我还建议在可能导致此错误的方法中添加某种日志记录。这样,就可以更容易地确定问题的位置。