0

我正在尝试查找负责引发间歇性System.ServiceModel.CommunicationException异常的 Web 方法的名称(Web 应用程序有数百个)。

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

有什么方法可以确定哪个 Web 方法对异常负责?

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

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

谢谢

4

1 回答 1

0

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

假设您使用的是 Visual Studio 2010:

  1. 在顶部菜单栏中,单击调试,然后单击异常。
  2. 单击打开该Common language runtime exceptions部分。
  3. 向下滚动直到找到System.ServiceModel,也单击此打开。
  4. 在对应异常的复选框中添加一个勾号

如果可能的话,我还建议在可能导致此错误的方法中添加某种日志记录。这样,更容易确定问题的位置。

于 2013-04-12T08:53:08.660 回答