问题描述

  用户在使用我们开发的C#编写的C/S架构的程序时报错,错误消息为:
  “没有终结点在侦听可以接受消息的 XXXX.asmx。这通常是由于不正确的地址或者 SOAP 操作导致的。如果存在此情况,请参见
InnerException 以了解详细信息。”
  这种错误的常见原因有:
    1)WebService的服务地址出错,这时候可以把webservice地址复制到浏览器上看是否可以访问;
    2)服务器无法访问,虽然地址是对的,但是客户机没有权限访问服务器地址或者服务器端口,这时可以使用ping或者telnet命令进行测试;

  但是这次碰到的问题不是上述两种原因造成的,该问题是由于用户使用我们的程序进行内容编辑,为了将内容一次性保存到数据库,设计了一个WebService接口将所有内容一次性上传保存。通过测试,当内容较少时可以正常调用WebService接口,但是内容比较多,比如大于60M时就会报开头提到的那个错误。


解决方案


  一开始认为是服务器端和客户端的配置文件中设置的缓存太小了,于是就把服务器端和客户端的BasicHttpBinding中的缓存设置都加大,但是没有用,依然报相同的错误。

  接着又在网上查到另外的配置文件设置方法,在客户端配置文件中增加LargeQuotaBehavior的行为,然后在终结点设置中配置该行为,在服务器端也是类型的设置。设置之后,依然报相同的错误。
<endpointBehaviors> <behavior name="LargeQuotaBehavior"> <
dataContractSerializer maxItemsInObjectGraph="2147483646"/> </behavior> </
endpointBehaviors> <endpoint address="http://localhost/myservice/" binding=
"webHttpBinding" bindingConfiguration="webHttpBinding1" contract=
"MyNamespace.IMyService" bindingNamespace="MyNamespace" behaviorConfiguration=
"LargeQuotaBehavior">
  最后是通过在IIS中设置对WebService进行以下设置解决的问题,而且不需要对程序的客户端和服务器端文件进行改动,设置步骤如下:
  步骤1:打开IIS,鼠标左键点击有问题的WebService,在右边的图标列表中双击“请求筛选”图标;

  步骤2:在请求筛选窗口的右侧,点击“编辑功能设置”;


  步骤3:在编辑请求筛选设置窗口,将“允许的最大内容长度”中的设置变大,根据需要设置响应的数值,我就是直接在后面加了个0。点击确定按钮,重启该WebService,问题解决。


友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信