使用Google Chrome和HTTPListener获取ProtocolViolationException

本文关键字:获取 ProtocolViolationException HTTPListener Google Chrome 使用 | 更新日期: 2023-09-27 17:58:30

我开发了一个管理工具,使用一个简单的HTTPListener返回HTML页面。IEFF一切都很好,但我在使用Google Chrome时遇到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();

异常

要写入流的字节超过指定的Content-Length字节大小

从行抛出

上下文Response.OutputStream.Write(缓冲区,0,缓冲区长度);

Chrome做了什么或没有做什么来产生这个错误?

感谢

使用Google Chrome和HTTPListener获取ProtocolViolationException

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