我有一个Web服务,我发送一个大字符串(大约是700000个字符)作为参数。我从javascript(ScriptManager)调用此Web服务。
问题是,当字符串长度大约为100000时,它会成功点击Web服务,但如果字符串长度大约为700000,则无法访问Web服务并且它会提供此按键
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服务?
答案 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中传递整个消息,那么你做得不对。从技术上讲,您的服务必须是GET
或POST
来电。
使用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