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 件のコメント:
コメントを投稿