这篇文章上次修改于 926 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
今天发现 HttpWebRequest.GetRequestStream
首次请求的时候很慢,大概要十几秒才返回。网上搜了很多,尝试了如下方法均未奏效:
- 通过代码的方式关闭代理,
httpWebRequest.Proxy = null
在 App.config 配置文件中增加如下内容,关闭默认代理:
<?xml version="1.0"?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> <system.net> <defaultProxy enabled="false" useDefaultCredentials="false" > <proxy/> <bypasslist/> <module/> </defaultProxy> </system.net> </configuration>
- 设置流写入超时时间,
httpRequest.GetRequestStream().WriteTimeout = 500
- 禁用 VMWare 的几个虚拟网卡
后面实在没辙,只好使用 dnSpy 调试功能进入 GetRequestStream
内部进行调试,最终发现耗时操作发生在 Dns 解析远程服务器域名时。
赶紧检查网卡设置的 首选 DNS 服务器,发现设置的是 114.114.114.114
,上网查了下,成都地区电信的首选 DNS 服务器是:202.98.96.68
,备用 DNS 服务器是:61.139.2.69
。赶紧设成这两个,再一试,首次请求 400 毫秒左右,基本正常,问题解决。
没有评论