Я имею дело с некоторым кодом, который использует настраиваемый фильтр HttpResponse в приложении asp.net.
response.Filter = new HtmlResponseFilterStream();
Этот HtmlResponseFilterStream наследуется от MemoryStream. Метод записи был переопределен для получения содержимого ответа HTTP. Я использую Encoding.UTF8.GetString для получения содержимого страницы по частям.
public override void Write(byte[] buffer, int offset, int count)
{
var contentInBuffer = Encoding.UTF8.GetString(buffer);
...
}
На моем локальном компьютере, если я перехожу на любую страницу и отлаживаю код, я вижу переменную contentInBuffer, заполненную фактическим содержимым html. Оба с местным ISS или ISS Express. Это также работает в нашей производственной среде.
Однако, если я перейду к тестовой машине, все будет работать не так, как ожидалось. Если я отлаживаю содержимое внутри метода записи (используя удаленный отладчик). Вместо этого я получаю какие-то странные символы. Так что я предполагаю, что это связано с использованием какой-то другой кодировки.. может быть..
И рабочие, и тестовые серверы имеют одинаковые характеристики с одинаковыми версиями ОС и серверов iis.
Я проверил настройки .Net Globalization и установил кодировку UTF-8 для заголовков запроса, ответа и ответа на обеих машинах.
Я почти уверен, что это должно быть что-то, связанное с настройками среды. Не уверен, связано ли это с IIS или окнами.
Любая идея?