gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:22:12 31 4
gpt4 key购买 nike

背景

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

实现

在控件的使用过程中,需要向网络服务发送一个序列化的对象。使用 XmlSerializer 序列化对象然后使用 chilkat 压缩库压缩生成的 XML 字符串。控件的 Web 服务调用如下所示:

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

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

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

public void SaveResponse(string compressedResponse)

控件和服务之间的通信正常。最初在 web.config 中没有定义任何设置或绑定(bind)对于以上任何一项。经过初步搜索,我确实添加了

<httpRuntime maxRequestLength="20480"/>

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

问题

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

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

我查看了 Google 上的各种选项,但没有一个提供足够好的示例说明在哪里进行更改,或者说明更改需要是什么样子的示例。我完全不知道是否需要在服务器或消费网站上进行更改,并且由于没有为此定义绑定(bind),如何在 web.config 中创建绑定(bind)用于 ASMX HTTP 服务调用。

最佳答案

我相信您一定达到了 ASP.NET 最大请求长度限制。您可以通过配置文件进行修改,例如:

<system.web>
<httpRuntime executionTimeout="240" maxRequestLength="20480" />
</system.web>

maxRequestLength 值以 KB 为单位,因此以上设置将允许 20 MB。您还可以使用位置标签将设置仅应用于选定的 URL,例如

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

关于c# - 如何增加 ASMX Web 服务的 POST 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4744678/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com