2017-10-01 16 views
0

テキストファイル(500000行)を文字列配列に読み込む簡単なWebMethodがあります。 メソッドを呼び出すajaxに成功とエラーの呼び出しがあります。ASP.NET WebMethod読み込みファイルエラー

問題: 私はバックエンドコードでデバッグし、すべてが期待どおりであることを確認できます。すべての値が意図どおりに読み取られ、コードが正しく終了します。

ただし、コードがReadAllLines()行を超えて進むと、フロントエンドでエラーが発生します。

  • 私は、テキストファイルを読み込むC#コードの1行目にブレークポイントを置く:正確に何が起こる

  • デバッグ中に次の行に行くと、mywords配列にファイルから読み込まれたすべての単語が読み込まれます。エラーはありません。ただし、Webページ(フロントエンド)がアラート(エラー)をトリガーします。

何が間違っているか把握できません。

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"); 
    } 
}); 

がUPDATE:私は10,000行のような少数の行を含む別の1への入力ファイルを変更します。エラーなしで動作します。

+1

エラーは何ですか? – hardkoded

+0

'$ .ajax'は' dataType: 'json''を期待していますが、あなたのメソッドは 'string []'を返します。 –

+0

アレックス - 戻り値の型を配列ではなく文字列に変更した場合、私は同じ問題を抱えています – pessi

答えて

1

JSON文字列のデフォルトの最大長は2097152文字(4 MB)です。これはWeb.configのMaxJsonLengthプロパティで定義されています。

おそらく、あなたの設定でより高い値を定義する必要があります。 MaxJsonLengthに設定できる最大値は次のとおりです。

<system.web.extensions> 
    <scripting> 
     <webServices> 
      <jsonSerialization maxJsonLength="2147483647"></jsonSerialization> 
     </webServices> 
    </scripting> 
</system.web.extensions> 
関連する問題