using (var client = new HttpClient()) { client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); var content = new StringContent(jsonString, Encoding.UTF8, "application/json"); var task= client.PostAsync(uri, content).ContinueWith(x => { var response = x.Result; if (!response.IsSuccessStatusCode) { throw new Exception(response.ReasonPhrase); } ・・・ }); try { task.Wait(); } catch (AggregateException ex) { throw ex.Flatten(); } catch { throw; } }
40MB近くあるデータをPOSTしたところ、レスポンスに「Not Found」、いわゆる404エラーが返ってきました。
送信データサイズが小さい場合は問題はなく、エラーの原因がサイズの大きさにあることは明らかなのですが、
サーバーが受け取るリクエストの最大サイズはmaxRequestLengthですでに指定しています。
調べてみると、どうやらそれだけでは不十分で、リクエスト内のコンテンツ最大長(maxAllowedContentLength)の指定も
必要だということが分かりました。
web.configにmaxAllowedContentLengthを追加し、送信データサイズ以上の値を指定すると、エラーが返ることはなくなりました。
<system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="52428800"></requestLimits> </requestFiltering> </security> </system.webServer>
またいつか、どこかで。
0 件のコメント:
コメントを投稿