ASP.NET WebMethod读取文件错误

时间:2017-10-01 18:45:00

标签: c# asp.net webmethod

有一个简单的WebMethod,它将文本文件(500000行)读入字符串数组。 调用该方法的ajax具有成功和错误调用。

问题: 我可以调试后端代码,看看一切都如预期。所有值都按预期读取,代码正确地结束。

然而,当代码超出ReadAllLines()行时,它会在前端发生错误。

究竟发生了什么:

  • 我在c#代码的第一行放了一个断点,在那里我读了文本文件。
  • 当我在调试期间转到下一行时,mywords数组包含从文件中读取的所有单词。没有错误。但是,网页(前端)会触发警报(错误)。

无法弄清楚出了什么问题。

C#WebMethod:

[System.Web.Services.WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string[] Test(string Test)
{
    string[] mywords = File.ReadAllLines(Server.MapPath("~/Sample/sample.txt"));
    return mywords;
}

AJAX电话:

$.ajax({
    type: "POST",
    url: "test.aspx/Test",
    data: JSON.stringify({ Test: Test }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
        alert("success");
    },
    error: function (xhr, status, error) {
        alert("error");
    }
});

更新:当我将输入文件更改为包含较少行(如10,000行)的另一个文件时。它没有错误。

1 个答案:

答案 0 :(得分:1)

JSON字符串的默认最大长度为2097152个字符(4 MB)。它在Web.config中的MaxJsonLength属性中定义。

您可能需要在配置中定义更高的值。以下是您可以为MaxJsonLength设置的最大值:

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