在C#开发中,我们经常要用到第三方或者自定义的webapi接口,在使用HTTPClient进行http请求时,在一些特定的需求场景下会遇到诸如请求的json参数长度超长或者大小超过IIS默认的大小,这时候程序就会报错,经实践总结几个简单的解决办法。
一、对于Web应用程序项目
我们可以在Web.config的配置文件当中增加如下配置节点:
<system.web>
<httpRuntime executionTimeout="600" maxRequestLength="100000000" maxQueryStringLength="20480"></httpRuntime>
</system.web>
executionTimeout:超时时间,以秒为单位
maxRequestLength:最大长度
maxQueryStringLength:大小(20M)
来灵活配置请求允许的超时时间、长度及大小
二、对于控制台应用程序
使用第一种方式验证后发现没有效果,所以对于控制台应用程序需要在代码中设置请求的超时时间:
using (var httpClient = new HttpClient())
{
httpClient.Timeout = TimeSpan.FromSeconds(600);
var serialzeSetting = new JsonSerializerSettings()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
};
HttpContent httpContent = new StringContent(JsonConvert.SerializeObject(input, Formatting.Indented, serialzeSetting));
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
response = httpClient.PostAsync(submitUrl, httpContent).Result.Content.ReadAsStringAsync().Result;
}
使用HttpClient.Timeout = TimeSpan.FromSeconds(600)来设置该http请求的超时时间。