2011-06-03 37 views
5

我开发了一个管理工具,我使用简单的HTTPListener来返回HTML页面。一切正常与IEFF但我得到ProtocolViolationException当使用Google Chrome使用Google Chrome和HTTPListener获取ProtocolViolationException

这是简化的代码(来自listener.BeginGetContext凸起),其产生错误:

byte[] buffer = System.Text.Encoding.UTF8.GetBytes("<html><body>response sent!</body></html>"); 
context.Response.ContentLength64 = buffer.Length; 
context.Response.OutputStream.Write(buffer, 0, buffer.Length); //<-- crashes here 
context.Response.OutputStream.Close(); 
context.Response.Close(); 

异常

字节将被写入到该流超过内容长度的字节指定大小。

从管线

context.Response.OutputStream.Write(缓冲液,0,buffer.Length)抛出;

什么是Chrome做或不做这个错误?

感谢

回答

5

我知道这是一个有点晚了,但我刚刚遇到了这个问题(无法与Chrome),并发现了这个问题。 当您尝试将某些内容写入OutputStream以响应HEAD请求时,看似防弹的代码失败。 ContentLength64然后被设置为0,并且出于某种原因,当您尝试更改它时不会抛出异常,新值将被默默忽略。

+2

为了记录,您必须至少在接收到HEAD请求时关闭响应流,否则您会一直卡住。 – pierrecouzy 2012-04-05 17:57:14

相关问题