【问题标题】:ASP.NET WebMethod reading file errorASP.NET WebMethod 读取文件错误
【发布时间】:2017-10-02 16:11:20
【问题描述】:

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

问题: 我可以调试后端代码并查看一切是否符合预期。所有值都按预期读取,代码正确执行到末尾。

但是,当代码超出ReadAllLines() 行时,它会在前端触发错误。

究竟发生了什么:

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

不知道哪里出了问题。

C#网络方法:

[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 行)的文件时。它可以正常工作。

【问题讨论】:

  • 错误是什么?
  • 您的 $.ajax 期望 dataType: 'json' 但您的方法返回 string[]
  • Alex - 如果我将返回类型更改为字符串而不是数组,我仍然会遇到同样的问题
  • 更新了更多信息。当使用行数较少的文本文件时,它可以工作。

标签: c# asp.net webmethod


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多