我正在尝试使用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;
}
}
是否可以发送此字符串?
答案 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个字符。