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

前端之家收集整理的这篇文章主要介绍了c# – 如何增加ASMX Web服务的POST大小?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
背景

我正在开发一个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>
原文链接:https://www.f2er.com/csharp/99152.html

猜你在找的C#相关文章