Получение исключения ProtocolViolationException с помощью Google Chrome и HTTPListener - PullRequest
5 голосов
/ 03 июня 2011

Я разработал инструмент администратора, в котором я использую простой HTTPListener для возврата HTML-страниц.Все хорошо работает с IE и FF , но я получаю ProtocolViolationException при использовании Google Chrome .

Этоэто упрощенный код (полученный из 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

выбрасывается из строки

context.Response.OutputStream.Write (buffer, 0, buffer.Length);

Что делает или не делает Chrome 'сделать это ошибка?

Спасибо

1 Ответ

5 голосов
/ 04 февраля 2012

Я знаю, что уже слишком поздно, но я только что столкнулся с этой проблемой (не с Chrome) и нашел этот вопрос.Этот, казалось бы, пуленепробиваемый код не работает, когда вы пытаетесь что-то записать в OutputStream в ответ на запрос HEAD.ContentLength64 тогда устанавливается в 0, и по какой-то причине не возникает исключение при попытке его изменить, новое значение просто игнорируется.

...