首页 新闻 会员 周边 捐助

.net MVC后台通过HttpClientHandler访问webapi时,第一次很慢

0
悬赏园豆:20 [已解决问题] 解决于 2015-06-10 12:43

在网上搜索是因为默认使用代理。需要在webapi的配置文件中设置:

<system.net>
<defaultProxy enabled="false" useDefaultCredentials="false">
<proxy></proxy>
<bypasslist></bypasslist>
<module></module>
</defaultProxy>
</system.net>

但是,也没有得到改进。求助!!!

CCH-Taurus的主页 CCH-Taurus | 初学一级 | 园豆:136
提问于:2015-06-09 18:29
< >
分享
最佳答案
1

有可能是webapi首次启动比较慢。

收获园豆:20
幻天芒 | 高人七级 |园豆:37205 | 2015-06-10 08:52

首次启动时间应该不至于超过5s吧,但是第一次访问超过了5s。

CCH-Taurus | 园豆:136 (初学一级) | 2015-06-10 09:05

@CCH叔叔: 这个就不好说了。可以尝试用其他方式访问web api,来确认问题。比如Chrome插件 “Rest Client”

幻天芒 | 园豆:37205 (高人七级) | 2015-06-10 09:15

@幻天芒: 直接通过url地址访问,第一次需要6s,第二次需要3s,第三次只需要几百毫秒了,这是因为首次启动慢吗?

CCH-Taurus | 园豆:136 (初学一级) | 2015-06-10 09:21

@CCH叔叔: 如果每次测试都这样,那就建议你打印日志,来查看每个步骤的耗时了。

幻天芒 | 园豆:37205 (高人七级) | 2015-06-10 09:27

@幻天芒: 我打了日志了,webapi中执行完成操作只要几十毫秒。

CCH-Taurus | 园豆:136 (初学一级) | 2015-06-10 09:34

@CCH叔叔: 数据很大?你chrome看下http请求,看一下每个阶段的耗时。

幻天芒 | 园豆:37205 (高人七级) | 2015-06-10 09:37

@幻天芒: 返回的JSON数据,64kb。等待响应用了4.54s。我现在改成了在代码中设置代理为空。

var handler = new HttpClientHandler())
handler.Proxy = null;

CCH-Taurus | 园豆:136 (初学一级) | 2015-06-10 09:41

@CCH叔叔: 这个只能一步一步测试了。看来dns解析时间,然后看看是不是json序列化慢,还可以写个更简单,返回string的api测试下。

幻天芒 | 园豆:37205 (高人七级) | 2015-06-10 09:45

@幻天芒: json序列化只用3ms,dns解析只用了1ms,全部时间都花在了等待响应上

CCH-Taurus | 园豆:136 (初学一级) | 2015-06-10 09:49

@CCH叔叔: 

返回字符串都用了5.12s

CCH-Taurus | 园豆:136 (初学一级) | 2015-06-10 09:52

@CCH叔叔: 换个请求呢~换个浏览器呢?不用HttpClientHandler,用WebClient呢。只能各种试验了。

幻天芒 | 园豆:37205 (高人七级) | 2015-06-10 09:53

@幻天芒: 直接url地址访问,就没有用HttpClientHandler。

CCH-Taurus | 园豆:136 (初学一级) | 2015-06-10 09:57

@CCH叔叔: 看来是webApi那块的问题。检查下初始化代码吧。没有代码,我也没啥好办法了。

幻天芒 | 园豆:37205 (高人七级) | 2015-06-10 12:24

@幻天芒: 那只能我自己找找问题所在了

CCH-Taurus | 园豆:136 (初学一级) | 2015-06-10 12:42

@CCH叔叔: 是的,大概就是测试,将问题锁定在最小的部分。然后再去深究。

幻天芒 | 园豆:37205 (高人七级) | 2015-06-10 14:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册