近日在系统中集成ElasticClient客户端,自动创建索引、删除索引,发现通过 ElasticClient 的 LowerLevelClient 无法正确返回结果,但是索引已成功创建或删除。

并会在超时时间呢抛出异常”A task was cancelled“,查阅官方文档和Google都无解。

早上重新尝试,改用HttpClient直接进行访问,依然是一样的问题。

无奈,祭出Fiddler,进行请求分析。

1)使用Composer模拟请求,最简单的GET操作,居然也不能立即返回结果

 

2)使用浏览器直接访问,能够正确返回结果

 

3)比较Http 请求头,Fiddler 请求头基本都是空的,从浏览器复制Fiddler的请求头过来,最终发现,加上下面的请求头,就能正确返回结果:

Accept-Encoding: gzip, deflate

 

4)对应HttpClient来说,就可以用下面的方法解决了

HttpClientHandler handler = new HttpClientHandler()
            {
                AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
            };

            var httpClient = new HttpClient(handler)
            {
                BaseAddress = new Uri($"http://{es_host}:{es_port}")
            };

使用这个HttpClient再去访问ElasticSearch,立即就能返回结果。

 

问题分析:服务器端默认情况下返回结果就会使用Gzip压缩,但是客户端默认不处理数据解压,就导致客户端读取数据时,无法判断数据是否已经读取完毕,就一直挂起,直到超时,然后抛出”A task was canceled" 错误。

 HttpClient 其他的 “A task was Canceled” 错误,很可能也是因为Http头设置不正确造成的,而服务器对客户端特性有要求,如本例的Gzip。 

 

 

posted @ 2017-11-28 10:48 Mobwiz 阅读(8317) 评论(1) 推荐(0) 编辑
摘要: Ryzen 处理器,8核16线程,不虚拟化太浪费了 阅读全文
posted @ 2017-08-17 21:00 Mobwiz 阅读(2999) 评论(0) 推荐(0) 编辑
摘要: 目标:测试Hadoop的集群安装 参考文档: 【1】http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/SingleCluster.html 【2】http://hadoop.apache.org/docs/r 阅读全文
posted @ 2017-07-04 17:14 Mobwiz 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 最近项目需要部署Scrapy爬虫,采用最简单的Scrapyd服务进行部署,基于.net core 进行了客户端的封装。 1)Scrapyd API文档:http://scrapyd.readthedocs.io/en/latest/api.html 2)使用HttpClient进行交互 比较麻烦的是 阅读全文
posted @ 2017-06-01 13:47 Mobwiz 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 360杀毒将 TypeScript的 tsserver.js 列为木马,结果导致VS2017启动时,总是报错,将其加为信任即可解决。 阅读全文
posted @ 2017-06-01 13:36 Mobwiz 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 之前写过一篇使用C# UDP 组播技术做的桌面广播实现, C# 使用UDP组播实现局域网桌面共享。最终效果差强人意,UDP包在不同的交换机上发送还会出现发送失败的情况,所以又重新研究了一些新的方法,包括只发送差异画面的方法,但是依然无法组播。后来搜索到一篇论文,使用RDP技术进行的桌面广播,实验了一 阅读全文
posted @ 2016-02-02 16:45 Mobwiz 阅读(17160) 评论(34) 推荐(16) 编辑
摘要: Asp.net mvc 中使用 Web Optimization 可以合并、压缩JS和CSS文件,但是每次修改都要改代码 ~/App_Start/BundleConfig.cs ,遂有了将它挪到配置文件的想法 思路很简单,做一个XML配置文件来保存。 首先,了解一下Bundle有两种,一种是... 阅读全文
posted @ 2015-06-17 14:24 Mobwiz 阅读(1104) 评论(1) 推荐(0) 编辑
摘要: 之前用EntityFramework Code First做了一些小项目,很是方便;后来在一个 Java 项目中接触了myBatis之后,深深的喜欢上了这种最直接最原始最灵活的数据库操作,所以最终决定改造之前的项目,使用IBatis访问数据库;一、框架搭建1)新建一个Asp.net Mvc的应用,.... 阅读全文
posted @ 2015-06-15 15:48 Mobwiz 阅读(3013) 评论(2) 推荐(2) 编辑
摘要: 最近需要在产品中加入桌面共享的功能,暂时不用实现远程控制;参考了园子里的一些文章,加入了一些自己的修改。需求:将一台机器的桌面通过网络显示到多个客户端的屏幕上,显示内容可能为PPT,Word文档之类的内容,不含视频。1)抓屏参考了网上找到的一段代码如下static BitmapSource Copy... 阅读全文
posted @ 2014-05-08 11:19 Mobwiz 阅读(9446) 评论(10) 推荐(9) 编辑
摘要: 做了一个Win 8 Store APP,其中有一个List Box,从另外一个Page Navigate到这个Page之后,需要自动选中 List Box中的一项。开始是这么写的....Items与SelectedItem都写在DefaultViewModel中结果死活都不能成功,用了各种方法,包括设置SelectedIndex,结果还报超出范围,跟踪看了一下,设置Index的时候,ListBox中的Items数量为0;后来,把两个Binding换了个位置....结果就成功了原来Xaml中的Binding是有先后的。小记一下 2013.12.31 阅读全文
posted @ 2013-12-31 11:41 Mobwiz 阅读(514) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示