如何使用ajax发送一个很大的字符串?

时间:2019-07-17 12:23:19

标签: c# ajax string

我正在尝试使用Ajax发送一个很大的字符串(大约3百万个半字符)。 该代码可以在较小的字符串上正常工作,但是如果我尝试使用该字符串,则需要传递它将无法正常工作。 我使用的字符串是已编码的base64 Excel文件。

这是我用来发送字符串的代码:

$.ajax({
      url: "", //The page I call
      type: "GET",
      data: { base64: "....."},//here goes the string I need to pass
      dataType: 'text',
      success: function (response) {
      alert("successful");
      },
      error: function () {
          alert("error");
      }
});

此代码适用于较小的字符串,但不适用于我的代码。 同样,我要传递的字符串大约是3百万个半字符,甚至可能更大。

后端代码如下:

[HttpGet("Test")]
        public async Task<string> testHelloWorld(string saluto)
        {

            try
            {
                string testString = "Funziona";
                Console.Write(testString + ": " + saluto + "\n");
                return testString;
            }
            catch (Exception ex)
            {
                Log.Error("API(Test) - Exception", ex);
                return null;
            }
        }

是否可以发送此字符串?

3 个答案:

答案 0 :(得分:2)

使用POST代替GET,因为通常在Web服务器上配置的查询字符串的长度受到限制。

答案 1 :(得分:1)

对于GET请求,HTTP本身没有施加任何硬编码的限制,但是浏览器的限制范围为2kb-8kb。该限制取决于服务器(Apache,IIS,NGINX等)和客户端(浏览器)端。

对大字符串使用POST请求。如果仍然引起问题,请尝试压缩数据。

答案 2 :(得分:0)

将ajax更改为POST并更改web.config文件上的jsonSerialization最大长度。

默认值为2097152个字符。将其更改为2147483644(最大长度),然后再次检查。

<configuration> 
   <system.web.extensions>
       <scripting>
           <webServices>
               <jsonSerialization maxJsonLength="2147483644"/>
           </webServices>
       </scripting>
   </system.web.extensions>
</configuration> 

使用GET,最大网址长度为2083个字符。