我试图使用一个使用soap::lite(perl)创建的web服务。我在用C_消费服务。在很大程度上它工作得很好。我可以抓取响应并根据需要解析它们。但是,我有一些电话不起作用。
我收到以下信息:
“远程主机已强制关闭现有连接”
据我所知,服务器可能正在切断
不管是什么原因。我想找出原因。我想是因为
一些响应的详细信息的大小。我有一个特别的
总是失败,当我从soap响应中查看xml时,它总是
在完全相同的位置截断,就好像它到达了那个位置并达到了一个大小
极限。
所以,我已经做了所有我能想到的关于客户规模的事情,比如改变
MaxReceivedMessageSize和超时设置等。我注意到我可以
增加超时和执行时间随后增加,但我正在做的诊断日志总是停在同一个点上。
我还编写了一个类,它允许我查看原始xml,而且它停在同一个位置。
我想也许服务器上的某些东西需要更改,但我尝试过的一切都不起作用。该服务托管在运行IIS 6的Web服务器上。
有人对我在客户端和/或服务器端可以做什么有什么建议吗?
谢谢
编辑
我应该注意到没有供我使用的wsdl文件。我使用的应用程序是我唯一一次使用soap::lite,从中我可以看出它没有生成wsdl。
@E36M3-谢谢你的建议。我从没听说过索皮。我安装并试用了它,我可以看到它的许多用途,所以我会记住它的未来。不幸的是,它似乎是围绕着wsdl测试构建的,我看不出在不提供wsdl的情况下如何使用它进行测试,鉴于这种特殊情况,wsdl是一个问题。
以下是我的跟踪日志记录中的一些相关数据。它以无效XML的结尾和错误信息结尾。
system.net详细信息:0:[5772]000031e0;/map>系统.NET详细信息:0:[5772]000031e0>。
系统.NET详细信息:0:[5772]000031e0 esp1:mrwebservice
系统.NET详细信息:0:[5772]000031e0 es\uu getissuedeta
系统.NET详细信息:0:[5772]000031e0 ILSResponse>
system.net详细信息:0:[5772]000031e0 ap-env:body>
系统.NET详细信息:0:[5772]000031e0 ap-env:envelope>
system.net详细信息:0:[5772]正在退出connectstream 15566556::read()->12880 12880
系统.NET详细信息:0:[5772]connectstream 15566556::read()
system.net.sockets详细信息:0:[5772]socket 20784002::接收()
system.net.sockets错误:0:[5772]套接字中出现异常20784002::receive-连接尝试失败,因为连接方在
一段时间,或建立的连接失败,因为连接的主机未能
回应
system.net.sockets详细信息:0:[5772]正在退出socket 20784002::receive()->0 0
system.net.sockets详细信息:0:[5772]socket 20784002::dispose()
系统.NET错误:0:[5772]HttpWebrequest中出现异常63722612:—基础连接已关闭:接收时发生意外错误。
系统.NET详细信息:0:[5772]connectstream 15566556::close()
system.net详细信息:0:[5772]正在退出connectstream 15566556::close()
最佳答案
在app.exe.config中的Web服务绑定中,应设置最大接收邮件大小。默认值为maxReceivedMessageSize=“65536”。增加该值将允许客户端应用程序接收所有数据。