C# 返回非常大的字符串时.asmx请求超时

C# 返回非常大的字符串时.asmx请求超时,c#,xml,web-services,timeout,large-data,C#,Xml,Web Services,Timeout,Large Data,我们有两个.asmx soap web服务,用于处理web gui和后端应用程序服务器之间的通信。最近,我们从在内置web服务器上运行VisualStudio2010解决方案转向通过IIS 7.5运行它。我们立即开始经历非常慢的响应时间,并开始出现各种我们以前没有看到的异常,如xml中的超时和序列化错误 我们试图将问题缩小到最小,但缺少解决方案,所以现在我们将其“扔出去”,看看是否有人经历过同样的问题,或者可能有解决方案 另外,我们知道.asmxweb服务已经过时,但我们现在无法将这些服务转换为

我们有两个.asmx soap web服务,用于处理web gui和后端应用程序服务器之间的通信。最近,我们从在内置web服务器上运行VisualStudio2010解决方案转向通过IIS 7.5运行它。我们立即开始经历非常慢的响应时间,并开始出现各种我们以前没有看到的异常,如xml中的超时和序列化错误

我们试图将问题缩小到最小,但缺少解决方案,所以现在我们将其“扔出去”,看看是否有人经历过同样的问题,或者可能有解决方案

另外,我们知道.asmxweb服务已经过时,但我们现在无法将这些服务转换为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();
}
[WebMethod]
公共字符串DebugGetAuditTrail()
{
const string data=“一些不太有趣的随机文本。”;
StringBuilder lotsOfData=新的StringBuilder();

对于(int counter=0;counter理想情况下,不建议使用web服务发送大量数据。但是,要处理此类情况,最好的方法是将数据分成小数据包


您可以做的是,创建一个对数据包进行索引的标头。收到标头后,将服务器配置为发送剩余部分的数据。

理想情况下,不建议使用web服务发送大量数据。但是,要处理这种情况,最好的方法是将数据分成小数据包


您可以做的是,创建一个对数据包进行索引的标头。收到标头后,将服务器配置为发送剩余部分数据。

谢谢您的回答。soap web服务会有长度限制,这不是很奇怪吗?在Visual s中的内置web服务器中运行解决方案有什么区别tudio 2012与在IIS 7.5?中运行它应该大致相同,因为两者都遵循machine.config文件中指定的限制。此外,它不仅是长度,而且是处理特定请求所需的时间。您可以参考本文以获得进一步的参考。然而,在任何情况下返回都不是一种理想的情况来自soap服务的巨大响应。感谢您的回答。soap web服务会有长度限制,这不是很奇怪吗?在Visual Studio 2012中的内置web服务器中运行解决方案与在IIS 7.5中运行解决方案有什么不同?应该大致相同,因为它们都遵循machine.co中指定的限制nfig文件。此外,它不仅是长度,而且是处理特定请求所需的时间。您可以参考本文以获得进一步的参考。但是,在任何情况下,从soap服务返回巨大响应都不是理想的情况。
<httpRuntime executionTimeout="600" requestValidationMode="2.0" maxRequestLength="1400000"/>