c# – 如何增加ASMX Web服务的POST大小?

c# – 如何增加ASMX Web服务的POST大小?,第1张

概述背景 我正在开发一个ASP.Net服务器端控件,需要与ASMX Web服务进行通信.服务器端控件使用WebClient对象与Web服务进行通信,因为它需要经常在各种应用程序中重用,并且为了使开发人员更容易,他们不需要创建对Web服务的服务引用. 履行 在使用控件期间,需要将序列化对象发送到Web服务.使用XmlSerializer序列化对象,然后使用chilkat压缩库压缩生成的XML字符串.控件 背景

我正在开发一个ASP.Net服务器端控件,需要与ASMX Web服务进行通信.服务器端控件使用WebClIEnt对象与Web服务进行通信,因为它需要经常在各种应用程序中重用,并且为了使开发人员更容易,他们不需要创建对Web服务的服务引用.

履行

在使用控件期间,需要将序列化对象发送到Web服务.使用XmlSerializer序列化对象,然后使用chilkat压缩库压缩生成的XML字符串.控件的Web服务调用如下所示:

webClIEnt.UploadStringAsync(new Uri(serviceHost + serviceMethod),"POST",sendData)

sendData(string)的内容是compressedResponse = {CompressedData}.

Web服务有一个定义如下的方法来接收数据,然后使用chilkat库解压缩字符串值,然后使用XmlSerializer对对象进行反序列化.

public voID SaveResponse(string compressedResponse)

控制和服务之间的通信正在进行.最初,web.config中没有为上述任何内容定义任何设置或绑定.初步搜索后,我确实添加了

<httpRuntime maxRequestLength="20480"/>

客户端和服务器web.config文件.这没有任何区别.

问题

压缩或未压缩的sendData变量中发布到Web服务的数据对于正常的POST请求来说很大,并且已损坏.在以压缩格式将字符串发布到服务器之前和之后检查字符串的最后几个字符时,会确认这一点,并且在解压缩时,Xml文档在检入调试器时缺少最后一个根标记.字符串无法解压缩,因此每次服务调用都会失败.

如何增加WebClIEnt请求的POST大小以确保服务器收到完整的字符串?

我已经查看了Google上的各种选项,但没有一个能够给我一个足够好的样本,可以在哪里进行更改,或者更改需要的示例.我完全不知道是否需要在服务器或使用网站上进行更改,并且由于没有为此定义绑定,如何在web.config中为ASMX http服务调用创建绑定.

解决方法 我相信你必须达到ASP.NET最大请求长度限制.您可以通过配置文件修改,例如:
<system.web>  <httpRuntime executionTimeout="240" maxRequestLength="20480" /></system.web>

maxRequestLength值以KB为单位,因此上面的设置将允许20 MB.您还可以使用位置标记仅将设置应用于所选网址,例如

<location path="yourservice.asmx">    <system.web>        <httpRuntime executionTimeout="240" maxRequestLength="20480" />    </system.web></location>
总结

以上是内存溢出为你收集整理的c# – 如何增加ASMX Web服务的POST大小?全部内容,希望文章能够帮你解决c# – 如何增加ASMX Web服务的POST大小?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1243014.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存