11

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

我尝试在 Response 中使用 FireBug 来探索它,它向我展示了:

{"Message":"处理请求时出错。","StackTrace":"","ExceptionType":""}

在 Visual Studio 中使用断点,我已将to_return字符串复制到文本文件中。文件大小变为:127 KB。
可能出了什么问题?

4

1 回答 1

23

很可能您已经超过了 MaxJsonLength,默认情况下它是 102400 个字符并且您的字符串更大。您可以在 web.config 中增加此限制:

<configuration>
    ... 
    <system.web.extensions>
        <scripting>
            <webServices>
                <jsonSerialization maxJsonLength="300000" />
            </webServices>
        </scripting>
    </system.web.extensions>
    ...
</configuration> 
于 2012-12-17T14:56:03.273 回答