2017年11月27日月曜日

System.Net.WebException: リモート サーバーがエラーを返しました: (413) Request Entity Too Large

1)WCFのエラーが発生し、調査依頼が届いた

System.Net.WebException: リモート サーバーがエラーを返しました: (413) Request Entity Too Large

   場所 System.Net.HttpWebRequest.GetResponse()
   場所 apiTester.ApiTestForm.buttonGo_Click(Object sender, EventArgs e) 場所 D:\dev\sample\20171125_jsonペイロードエラー\apiTester\ApiTestForm.cs:行 513

2)解決策:Web.configに追加した内容

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

3)jsonで64KBが送信できないって相談が来て調査した。
newtonsoftのライブラリとASP.NET MVCかな?って思って、↓を回答したのですが、現象が解決せず、サーバのconfigを見たら、WCFを使っていた。

>>・Web.Configに以下を追加
>><appSettings>
>>     <!-- Jsonデータ送信時のkeyとvalueのペア数制限の最大値-->
>>     <add key="aspnet:MaxJsonDeserializerMembers" value="1000000" />
>></appSettings>

WCFでは、大きなメッセージでのサービス攻撃を回避するためにメッセージを65KBに制限しています。また、MTOMを使用しない場合は、byte []をbase64でエンコードされた文字列(サイズが33%増加)=> 48KB * 1,33 = 64KBに送信します。

この問題を解決するには、大きなメッセージを受け入れるようにサービスを再構成する必要があります。この問題は、以前は400 Bad Requestエラーを発生させましたが、新しいバージョンのWCFではこのタイプのエラーの正しいステータスコードである413を使用し始めました。

↓2009に読んだなぁ







0 件のコメント:

コメントを投稿