WebApi传递基础参数的时候可能会有各種各样的问题有的需要在服务端增加[FromBody]的特性,有的需要增加一层封装为实体有的用动态类型,下面介绍一个方便的调用列表方法通過WebClient类。代码如下需要什么参数只需要在QueryString中添加即可。
后端WebApi代码如下:
首次启动时间应该不至于超过5s吧但是第一次访问超过了5s。
@CCH叔叔: 这个就不好说了可以尝试用其他方式访问web api,来确认问题比如Chrome插件 “Rest Client”
@幻天芒: 直接通过url地址访问,第一佽需要6s第二次需要3s,第三次只需要几百毫秒了这是因为首次启动慢吗?
@CCH叔叔: 如果每次测试都这样那就建议你打印日志,来查看每个步骤的耗时了
@幻天芒: 我打了日志了,webapi中执行完成操作只要几十毫秒
@CCH叔叔: 数据很大?你chrome看下http请求看一下每个阶段的耗时。
@幻天芒: 返回嘚JSON数据64kb。等待响应用了4.54s我现在改成了在代码中设置代理为空。
@CCH叔叔: 这个只能一步一步测试了看来dns解析时间,然后看看是不是json序列化慢还可以写个更简单,返回string的api测试下
@幻天芒: json序列化只用3ms,dns解析只用了1ms全部时间都花在了等待响应上
返回字符串都用了5.12s
@CCH叔叔: 看来是webApi那塊的问题。检查下初始化代码吧没有代码,我也没啥好办法了
@幻天芒: 那只能我自己找找问题所在了
@CCH叔叔: 是的,大概就是测试将问题鎖定在最小的部分。然后再去深究
wo看过你先前写的关于HTTPClient的文章
@dudu: 已經改成静态HTTPClient的形式了,但是线程数还是一直向上涨但是程序中除了使用async Task的形式外,没有直接涉及到使用线程的地方貌似很难找到症结
@Impossible: 囿没有地方在同步方法中调用列表异步方法
@dudu: 有,有几个方法中没有用await直接调用列表异步方法后使用Result获取值了。
@dudu: 经过这今天观察在某个時候还是会出现线程不停的增长,内存正常所有的有同步方法调用列表异步的地方,HttpClient也改为静态的了在视图中有一部分调用列表异步方法的代码,有没有可能是这一部分引起的