在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请求的超时时间。
|