首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从HTTP500错误代码失败的.Net web服务捕获数据

从HTTP500错误代码失败的.Net web服务捕获数据
EN

Stack Overflow用户
提问于 2008-10-16 21:18:19
回答 6查看 3.8K关注 0票数 4

我有一个托管在IIS6.0中的wsdl服务,它周期性地失败并出现http 500,因为客户端连接到它时使用的数据与.net不匹配。

比如在方法中指定一个类型为int的元素,入站xml元素包含一个十进制数。

WSDL元素定义:

代码语言:javascript
复制
<s:element minOccurs="1" 
    maxOccurs="1" 
    form="unqualified" name="ItemCount" type="s:int" >  

提供的元素:

代码语言:javascript
复制
<ItemCount>1.0</ItemCount>

这会在iis日志中留下一个500错误,但不会返回有关返回的soap错误或导致该错误的输入数据的信息。

目前,我已经诊断出使用wireshark捕获所有内容所提供的数据存在几个问题,但我想知道其他可能不那么具侵入性的选项。

有没有办法捕获导致500个错误的正在发送的数据(希望只在发生500个错误时捕获数据)?可能是通过以下方式:

web服务配置web-service

  • Changing

的代码

测试tbreffni提供的答案后编辑

最符合我在tbreffni之后的答案-还有其他几个很好的响应,但答案允许捕获导致反序列化错误的有效负载,而不需要运行fiddler或wireshark之类的程序。

关于实际运行SOAP扩展的信息比较少,所以我在下面列出了我认为必要的步骤:

  • 按照MSDN文章构建SOAP扩展作为.dll
  • 将.dll添加到服务的bin目录中以跟踪
  • 在要跟踪的服务的web.config中将以下内容添加到webServices部分,替换SOAPTraceExtension.TraceExtension和SOAPTraceExtension以匹配您的扩展。

--

*

--

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-10-20 23:45:20

您可以在web服务中实现一个全局异常处理程序,该处理程序记录所发生的任何异常的详细信息。这对您当前的问题很有用,而且在生产环境中非常有用,因为它可以让您深入了解抛出了多少异常以及由什么代码引发。

要实现.Net web服务的异常处理程序,您需要创建SOAP扩展。有关示例,请参阅以下MSDN Article。我已经在几个生产web服务中使用了这种方法,它对于确定发生了什么问题以及发生在哪里非常有价值。

票数 2
EN

Stack Overflow用户

发布于 2008-10-16 21:54:10

我会试试fiddlerhere。它不是专门针对web服务的,通常是针对客户端的,它可以用作反向proxy

它具有很强的脚本可伸缩性和“请求/响应”意识,所以我认为你可以让它只捕获500个错误。

票数 3
EN

Stack Overflow用户

发布于 2008-10-16 22:34:50

我自己从来没有用过这个,但我只是在MSDN中找到了这个:Enabling Tracing in ASP.NET Web Services

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/210354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档