返回非常大的字符串时.asmx 请求超时
Posted
技术标签:
【中文标题】返回非常大的字符串时.asmx 请求超时【英文标题】:.asmx request timeout when returning a very large string 【发布时间】:2012-10-05 04:30:20 【问题描述】:我们有几个 .asmx soap web 服务来处理我们的 web gui 和我们的后端应用服务器之间的通信。最近,我们从在内置 Web 服务器中运行 Visual Studio 2010 解决方案转变为通过 IIS 7.5 运行它。很快我们就开始经历非常缓慢的响应时间,并开始出现我们以前没有看到的各种异常,比如我们的 xml 中的超时和序列化错误。
我们已尝试将问题缩小到最低限度,但缺乏解决方案,所以现在我们将其“扔出去”,看看是否有人遇到过相同的情况或可能有解决方案。
PS。我们知道 .asmx Web 服务已过时,但目前我们无法将服务转换为 WCF。 DS。
此代码将重现错误:
[WebMethod]
public string DebugGetAuditTrail()
const string data = "Some random text that is not very interesting. ";
StringBuilder lotsOfData = new StringBuilder();
for(int counter=0; counter<100000; counter++)
lotsOfData.Append(data);
return lotsOfData.ToString();
我们的 web.config 声明:
<httpRuntime executionTimeout="600" requestValidationMode="2.0" maxRequestLength="1400000"/>
提前致谢!
【问题讨论】:
【参考方案1】:理想情况下,不建议使用 Web 服务发送大量数据。但是,要处理这种情况,最好的方法是将数据拆分成小数据包。
您可以做的是,创建一个标头来索引数据包。收到标头后,配置服务器发送剩余部分数据。
【讨论】:
感谢您的回答。肥皂网络服务会有长度限制,这不是很奇怪吗?在 Visual Studio 2012 的内置 Web 服务器中运行解决方案与在 IIS 7.5 中运行解决方案有什么区别? 应该或多或少相同,因为它们都遵循 machine.config 文件中指定的限制。此外,它不仅仅是长度,而是处理特定请求所需的时间。你可以参考这篇文章iis.net/configreference/system.webserver/asp/limits做进一步的参考。但是,在任何情况下,从肥皂服务返回大量响应都不是理想的情况。以上是关于返回非常大的字符串时.asmx 请求超时的主要内容,如果未能解决你的问题,请参考以下文章