在我的 ASP.NET 网站中,我正在使用Jquery调用Web方法,如下所示:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: "{'param1': '" + param1 + "','param2': '" + param2+ "' }",
dataType: 'json',
url: "Default.aspx/TestMethod",
error: function (jqXHR, textStatus, errorThrown) {
alert("error: " + textStatus);
},
success: function (msg) {
document.getElementById("content").innerHTML = msg.d;
}
});
Web 方法定义为:
[System.Web.Services.WebMethod]
public static String TestMethod(String param1, String param2)
{
String to_return = /* result of operations on param1 and param2 */;
return to_return;
}
我的结果是一个包含 HTML 代码的字符串。
如果to_return
字符串很小,它就可以完美地工作。
但它给了我错误,因为:
500 内部服务器错误 6.22s
我试图使用 FireBug 在响应中探索它,它向我显示:
{"消息":"处理请求时出错。","堆栈跟踪":","异常类型":"}
使用Visual Studio中的断点,我将to_return
字符串复制到文本文件中。文件大小变为:127 KB。
可能出了什么问题?
很可能你已经超过了MaxJsonLength,默认情况下它是102400个字符,你的字符串更大。您可以在 web.config 中增加此限制:
<configuration>
...
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="300000" />
</webServices>
</scripting>
</system.web.extensions>
...
</configuration>