我已经开发了一个管理工具,在这里我使用一个简单的HTTPListener返回HTML页面。IE和FF的一切都很好,但是当使用Google 时,我得到了一个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(buffer, 0, buffer.Length);Chrome做什么或者不做什么来产生这个错误?
谢谢
发布于 2012-02-04 13:52:41
我知道为时已晚,但我只是遇到了这个问题(不是Chrome),并发现了这个问题。当您尝试为OutputStream编写响应HEAD请求的东西时,这段看似防弹的代码会失败。然后将ContentLength64设置为0,并且由于某种原因,当您试图更改它时不会引发任何异常,新值只是被默默地忽略。
https://stackoverflow.com/questions/6227534
复制相似问题