SOAP 响应大小

本文关键字:响应 SOAP | 更新日期: 2023-09-27 17:56:34

我正在尝试使用使用Soap::Lite(Perl)创建的Web服务。 我正在使用 C# 使用该服务。 在大多数情况下,它工作正常。我可以抓取响应并根据需要解析它们。 但是,我有一些电话不起作用。

我收到以下消息:"远程主机强行关闭了现有连接"

据我了解,服务器可能正在切断连接无论出于何种原因。我试图找到这个原因。我认为这是由于某些响应的详细信息的大小。我有一个特别会总是失败,当我从 SOAP 响应查看 XML 时,它总是在完全相同的位置截断,就好像它到达该位置并已达到大小一样限制。

因此,我已经完成了我能想到的有关客户端大小的所有操作,例如更改最大接收消息大小和超时设置等我注意到我可以增加超时,执行时间随后增加,但我正在执行的诊断日志记录始终在同一位置停止。

我还编写了一个类,允许我查看原始 XML,并且再次在同一位置停止。

我在想也许服务器上的某些东西需要改变,但我尝试过的所有内容都不起作用。 该服务承载在运行 IIS 6 的 Web 服务器上。

有没有人对我可以在客户端和/或服务器端做什么有任何建议?

谢谢

编辑


我应该注意的是,没有 WSDL 文件供我使用。 我正在使用的应用程序是我唯一一次使用 SOAP::Lite,据我所知,它不会生成 WSDL。

@e36M3 - 感谢您的建议。 我从未听说过soapUI。我安装并试用了它,我可以看到它的许多用途,所以我将来会记住它。 不幸的是,它似乎是围绕 WSDL 测试构建的,如果不提供 WSDL,我看不到如何使用它进行测试,鉴于这种特殊情况,这是一个问题。


下面是我的跟踪日志记录中的一些相关数据。 它从无效 xml 结束的位置开始,以错误信息结束。

System.Net 详细: 0 : [5772] 000031E0 ;/map>.ystem.Net 详细: 0 : [5772] 000031E0>.System.Net 详细: 0 : [5772] 000031E0 esp1:MRWebServic
System.Net 详细: 0 : [5772] 000031E0 es__getIssueDeta
System.Net 详细: 0 : [5772] 000031E0 ils响应>System.Net 详细: 0 : [5772] 000031E0 AP-ENV:身体>System.Net 详细: 0 : [5772] 000031E0 AP-ENV:信封>
System.Net 详细: 0 : [5772] 退出连接流#15566556::Read() -> 12880#12880
System.Net 详细: 0 : [5772] 连接流#15566556::读取()
System.Net.Sockets 详细: 0 : [5772] Socket#20784002::Receive()
System.Net.Sockets 错误: 0 : [5772] 套接字 #20784002::接收 - 连接尝试失败,因为连接方在时间段,或建立的连接失败,因为连接的主机无法响应
System.Net.Sockets 详细: 0 : [5772] 退出套接字#20784002::接收() -> 0#0
System.Net.Sockets 详细: 0 : [5772] Socket#20784002::D ispose()
System.Net 错误: 0 : [5772] HttpWebRequest#63722612: - 基础连接已关闭:接收时发生意外错误。System.Net 详细: 0 : [5772] 连接流#15566556::关闭()
System.Net 详细: 0 : [5772] 退出连接流#15566556::关闭()

SOAP 响应大小

在 app.exe.config 中 Web 服务的绑定中,应是最大接收消息大小的设置。默认值为 maxReceivedMessageSize="65536"。 增加该值应允许客户端应用接收所有数据。