如何将大数据发送到Web服务?

时间:2013-06-12 19:27:43

标签: javascript asp.net web-services

我有一个Web服务,我发送一个大字符串(大约是700000个字符)作为参数。我从javascript(ScriptManager)调用此Web服务。

问题是,当字符串长度大约为100000时,它会成功点击Web服务,但如果字符串长度大约为700000,则无法访问Web服务并且它会提供此按键 Error Message

JS代码

MyService.SendData("large string data", function (str) { }, function (err1) { alert(err1.get_exceptionType); });

WebService代码

[WebMethod(Description = "Test", EnableSession = true)]    
public void SendData(string str)
{//Here is breakpoint.
   //My code
}

所以我的问题是如何将大型字符串数据发送到Web服务?

2 个答案:

答案 0 :(得分:5)

使用POST请求代替GET。然后将数据附加到请求的正文而不是查询字符串。 (您必须将Web服务配置为接受POST个请求)

GET受查询字符串的最大长度限制,对于某些版本的IE,这可能是2000个字符。

答案 1 :(得分:0)

很少有建议:

增加web.config文件中的“maxQueryStringLength”属性,如下所示:

<system.web>
   <httpRuntime maxQueryStringLength="2097151"/>
</system.web>

此外,如果服务由IIS托管,您可能希望在web.config中添加以下代码,以便服务器不拒绝接受我们发送的更大尺寸的XML:

<system.webServer>
   <security>
     <requestFiltering>
       <requestLimits maxQueryString="2097151"/>
     </requestFiltering>
   </security>
</system.webServer>

但是,我建议你尝试使用jQuery而不是普通的JS来使用Web服务方法,因为我认为如果你在URL中传递整个消息,那么你做得不对。从技术上讲,您的服务必须是GETPOST来电。

使用jQuery使用ASMX Web方法的一些很棒的教程: http://encosia.com/using-jquery-to-consume-aspnet-json-web-services/

http://www.mikesdotnetting.com/Article/97/Cascading-DropDownLists-with-jQuery-and-ASP.NET