1

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

问题是,当字符串长度在 100000 左右时,它成功地访问了 Web 服务,但是如果字符串长度在 700000 左右,它就无法访问到 Web 服务,并且它给出了这个消息 错误信息

JS代码

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

网络服务代码

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

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

4

2 回答 2

5

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

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

于 2013-06-12T19:29:41.010 回答
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

于 2013-06-12T19:47:36.527 回答