使用 Jquery 从 ajax 调用返回大字符串到 Web ASP.NET 方法



在我的 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> 

最新更新