web-dev-qa-db-ja.com

Web APIアプリケーションのデフォルトの許可される応答サイズ設定を変更するにはどうすればよいですか?

イベントのリストを返すWeb APIメソッドがあります。

public HttpResponseMessage GetEvents()
{
...
}

My Serviceは、DataContractSerializer(xmlの場合)およびDataContractJsonSerializer(JSONの場合)を使用して、Xml応答とJSON応答の両方をサポートします。

応答サイズは30MBのようになります。

IISでホストされているASP.NET Web APIで許可されている既定の応答サイズはいくつですか?

デフォルト設定を変更するにはどうすればよいですか?

そのような大きなデータを返すためのベストプラクティスは何ですか(それほど大きくはありません)。

応答を圧縮する必要がありますか?

また、1秒あたり1つのリクエストを取得する場合があります。

ありがとう

14
The Light

あなたの問題についてはよくわかりません。 Responseはサイズを制限していないためです。レスポンスヘッダーにパラメータContent-Lengthを追加することで、レスポンスサイズを制限できます。したがって、以下の2つの問題が発生すると思います。

1。リクエストに制限がありました:これを解決するには、リクエストサイズを大きくして、大きなサイズのレスポンスを受信できるようにする必要があります。リクエストサイズを増やすには、次のようにweb.configに入力します。

<system.web>
<httpRuntime maxRequestLength="2147483647" />

2。あなたは応答バッファサイズが制限例外です:

MSDNの link に従ってください。

編集:

IISでホストされているASP.NET Web APIで許可されている既定の応答サイズはいくつですか?

応答サイズは、そこに入力したメッセージのサイズごとに自動的にサイズを取得します。また、応答サイズにも制限があります。 HttpReponseMessageは、実際に上記で投稿したのと同様の応答です。

そのような大きなデータを返すためのベストプラクティスは何ですか(それほど大きくはありません)。

link を使用してください。データを処理するためのベストプラクティスは、バイナリデータに変換し、それを多くの小さなパーツとして転送することです。

応答を圧縮する必要がありますか?

あなたのコンテキストに依存します。 IIS 7.0では、すでにZip応答を構成できますが、クライアントでコードに注意して、Zip応答をすでにサポートしているかどうかに注意してください。

13
Toan Vo

あなたのweb.configでこのコードを試してくださいそれは私の問題を解決しました

    <configuration> 
       <system.web.extensions>
           <scripting>
               <webServices>
                   <jsonSerialization maxJsonLength="50000000"/>
               </webServices>
           </scripting>
       </system.web.extensions>
    </configuration> 
7
shady sherif