近段时间去了一家新公司任职,公司产品是一个网站,但是我发现它不兼容谷歌浏览器,用习惯了chrome的我简直是如鲠在喉。终于我抽出了时间,想纠正这个问题。F12一看,发现谷歌提示:net::ERR_INCOMPLETE_CHUNKED_ENCODING,跟了一下代码,发现在一个 ajax 的时候出的问题,再次跟到后台发现了一个老员工写的函数 ReturnString():

    protected new void ReturnString(string str)
{
try
{
Response.Clear();
Response.Write(str);
Response.Flush();
Response.Close();
}
catch
{
}
}

  然后错误就出在 Response.Close() 这儿,我以前很少用 Close()都是 End(),所以也没咋注意,我简单的把 Response.Flush(); Response.Close() 改成 Response.End() 之后,暂时解决了问题,也就没管它了。

结果昨天下午,同事说另一个地方的另一个功能出了问题,他们会重复调几次后台,而第一次成功会直接 Close 掉,以拒绝掉多次调用,但 Response.End() 达不到这效果。这就是我解决了一个“BUG”,导致的另一个“BUG”。

因为快要下班了,只好先将就改回 Response.Close(),对于我这样的强迫症患者来说,这是不可忍受的。

今天一大早就过来了,百度了半天,都文不对题,要么就建议用回 Response.End,问题是我只想解决问题,不想制造新问题,这个方案当然不行。

然后研究了一会儿,抓包一看,发现数据并不完整,想到会不会是网络连接异常中断导致缓冲未完全导出,然后忽然想到之前做过一个日志记录,其中有一段用了 StreamWriter sw = new...;    sw.write(string);  sw.close(), 然后打开文件一看,发现 string 并未写全,12345 只写入了 123,后来改用  binarywriter 解决了问题,于是把代码一变终于解决了问题。

    protected new void ReturnString(string str)
{
try
{
Response.Clear(); /*
* 说明:
* Response.Close() 会强制关闭客户端连接,会导致谷歌浏览器认为异常结束
* 而 Response.Write(string) 又会存在缓冲问题,在 Close 的时候,谷歌浏览器并未获取到完整的 string 内容,
* 即便加上 Content-Length 参数也不管用。
* 直接 将内容转换为 byte[] 数组用 Response.BinaryWrite 可避免系统缓冲,解决此问题。
* 类似的问题也发现在 System.IO 的 StreamWriter 中,有时候写大文件的过程中
* 调用了 StreamWriter.Close() 会导致写入文件不完整,BinaryWriter 即可解决。
* 另外在此处,即便是调用了 BinaryWrite 也并未避免 Response.Close() 带来的连接异常问题。
* 虽然 谷歌已经获取到了所有的数据,但并不知道数据的具体长度,仍然会导致解析异常
* 所以还需要加上 Content-Length 参数
*/
//Replace {
//Response.Write(str);
// } to {
byte[] b = Response.ContentEncoding.GetBytes(str);
Response.BinaryWrite(b);
Response.AddHeader("Content-Length", b.Length.ToString());
// } by zhangjing 2016-10-25 Response.Flush();
Response.Close();
}
catch
{
}
}

  

chrome浏览器调用 ajax 提示net::ERR_INCOMPLETE_CHUNKED_ENCODING问题解决方案,以及 Response.Close 和 Response.End 的一些问题。的更多相关文章

  1. chrome 浏览器调用 ocx 插件(二)

    原文:http://blog.csdn.net/wangchao1988ok/article/details/46561537 chrome 版本:43.0.2357.124 之前写过关于 chrom ...

  2. 中文版Chrome浏览器不支持12px以下字体的解决方案

    中文版Chrome浏览器不支持12px以下字体的解决方案 Chrome 27之前的中文版桌面浏览器会默认设定页面的最小字号是12px,英文版则没有限制,主要是因为chrome认为汉字小于12px就会增 ...

  3. chrome 浏览器调用 ocx 插件

    原文:http://blog.csdn.net/wangchao1988ok/article/details/45193489 IE 上使用 ocx 插件网上已经有很多资料说明,这里就不重复了,那如何 ...

  4. Asp.net 不安全端口 解决chrome浏览器访问时提示:ERR_UNSAFE_PORT

    https://blog.bbzhh.com/index.php/archives/136.html 想在vps做个测试,看看是否25端口屏蔽是否生效,于是起了一个小web服务在25端口做测试,但是使 ...

  5. 解决Chrome浏览器访问https提示“您的连接不是私密连接”的问题

    安装fiddler后,使用Chrome访问https网站时,可能会出现以下错误,本文说明如何解决此类问题: “您的连接不是私密连接”.“NET::ERR_CERT_AUTHORITY_INVALID” ...

  6. Chrome浏览器桌面通知提示设置

    版本 24.0.1312.56 m     老版本23.* 桌面通知,也可以由用户在Chrome浏览器中自定义:板手 -> 选项  -> 高级选项 –> 通知 (管理例外情况…).

  7. Chrome浏览器中autocomplete="off"不起作用解决方案

    多数浏览器默认会缓存input的值,只有使用ctl+F5强制刷新的才可以清除缓存记录. 如果不想让浏览器缓存input的值,有2种方法: 方法一: 在不想使用缓存的input中添加 autocompl ...

  8. chrome浏览器解决ajax跨域问题

    方法一 1.右键谷歌快捷方式,选择"属性". 2.打开属性窗口,切换到"快捷方式"选项卡. 3.在目标路径的后面添加[ --disable-web-securi ...

  9. Chrome浏览器安装插件提示(net::ERR_NAME_NOT_RESOLVED)

    在chrome的webstore中安装currently插件.使用goagentFQ后能正常访问,但出现"net::ERR_NAME_NOT_RESOLVED"错误. 该错误的含义 ...

随机推荐

  1. HTML5常用的方法

    1.html禁止手机页面放大缩小 在页面head中加入<meta name="viewport" content="width=device-width, init ...

  2. 彻底搞定char/wchar_t/unicode

    彻底搞定char/wchar_t!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! (2013-07-17 10:18:28) 转载▼     从char/wchar_t到TCHAR(1) ...

  3. 升级owncloud到7.0.2

    owncloud很久没有提示升级了,官网已经升级到7.0.2,访问Update Center依旧显示是最新.估计是有什么问题导致不能自动更新.想着干脆手动升级试试.找到了两个手动升级的文档: 大版本升 ...

  4. eclispe 无法启动调试 cannot connect to VM

    eclispe中,点击调试运行java项目,出现 cannot connect to VM 正常的运行项目,没问题: 以为是jdk的安装路径等的问题,还有杀毒软件等等,都没有正常: 后来找到是wins ...

  5. Android使用Drawable资源之使用ClipDrawable资源 实现进入条

    以前我自定义的进度条(就是咱们现在工程中用的)是从android的源码中扒出来的一个XML,然后把里面的图片给替换了.一直不知道它的具体原理是什么. 今天得空研究了一下,发现它的原理其实就是用的and ...

  6. Java中的闪光点:ThreadLocal是线程Thead的局部变量,可替代同步机制的设计,值得学习和研究

    线程局部变量ThreadLocal,是Java支持的一种线程安全机制,目的是解决多线程的并发问题. 具体来讲,就是多个线程访问该实例对象的变量时,该实例对象将其存储为键值对的形式,保证各个线程(键)分 ...

  7. Linux系统下如何查看已经登录用户

    查看用户的操作 系统管理员若想知道某一时刻用户的行为,只需要输入命令W 即可,在SHELL终端中输入如下命令: [ROOT@LOCALHOST ROOT] # W 2:31PM UP 11 DAY , ...

  8. 时间--cd //lastyear

    夏木, 天堂里面有没有车来车往,就像当年南京 街头的喧嚣,我知道即使繁华一片,仍是无法填补你心头无底洞般的孤独! 只是因为在人群中多看了你一眼再也无法忘掉你容颜 是不是真的可以一醉解千愁 爱要怎么说出 ...

  9. 洛谷P3392 涂国旗

    P3392 涂国旗 107通过 507提交 题目提供者kkksc03 标签 难度普及- 提交  讨论  题解 最新讨论 直接读字符会wa WA?-- 为什么不对... 跪求找错 快点给钱 这不就是荷兰 ...

  10. 《从零开始做一个MEAN全栈项目》(2)

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习.   上一节简单介绍了什么是MEAN全栈项目,这一节将简要介绍三个内容:(1)一个通用的MEAN项目的技 ...