web-dev-qa-db-ja.com

ASP.NET Web API Post呼び出しのjsonサイズ制限を増やす方法は?

ページ上の私のフォームは少し大きすぎます。毎月の測定データを収集します。サンプルをご覧ください。

{
"Year":2013,
"Month":3,
"Records":[
    {"Id":0,"Date":"3/1/2013","RiverSection":5,"UserNumber":56},
    {"Id":0,"Date":"3/1/2013","RiverSection":7,"UserNumber":200},
    {"Id":0,"Date":"3/1/2013","RiverSection":8,"UserNumber":556},
    {"Id":0,"Date":"3/2/2013","RiverSection":5,"UserNumber":56},
    {"Id":0,"Date":"3/2/2013","RiverSection":7,"UserNumber":200},
    ...
    ...
    {"Id":0,"Date":"3/31/2013","RiverSection":7,"UserNumber":200}
}

だから私はビッグデータをAPIControllerに投稿しています。

Visual Studioデバッガサーバーを使用して、ローカルマシンで正常に動作します。しかし、コードをサーバー(IIS 6)にアップロードした後。それは500 Internal Server Errorを与えます。

サンプルデータを投稿して、文字列化されたjsonの長さを確認しました。

1つのサンプルデータセットでは、jsonの長さは5743であり、「成功」しました。しかし、jsonのサイズが17345に達すると、500 Internal Server Errorが得られます。

そこで、jsonの制限を増やしてみました。に基づく この投稿

Web.Config

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

しかし、それは機能していません。

次を使用して、別の答えがあります。

var serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue;

しかし、このコードはどこに配置する必要がありますか? Global.asaxで?

IIS 6.を使用していることに注意してください。それで問題はありますか?データがWebApiアクションにヒットできるように、jsonサイズの制限を正しく増やすにはどうすればよいですか?

助けてくれてありがとう。

11
Blaise

aspnet:MaxJsonDeserializerMembersappSettingsの下にweb.configを追加してみてください

<add key="aspnet:MaxJsonDeserializerMembers" value="20000"/>

ソース: フォームキー、ファイル、またはJSONペイロードメンバーが多数あるASP.NET要求は例外で失敗します

19