Всем привет, давно я тут не был :)
Ну вот и я окунулся в .Net, в связи с чем появился этот вопрос.
Итак, что мы имеем. Имеем старого клиента, установленного на очень многие машины, обращающийся к WEB-серверу. Стоит некоторая задача, которая вобщем-то уже решена, с таким условием, что клиента мы не меняем, дабы не иметь геморрой по переустановке новых версий на тысячах машин пользователей, а обходимся только изменениями на сервере.
Было решено старые ASP переписать под .Net. Используя URL Rewriting задача решена. Осталась одна проблема. Клиенту возвращается код ошибки, как и полагается в Response.StatusCode, а текст в Response.StatusDescription. Но вот засада, клиент ждет Win-1251, а ASP.Net возвращает utf-8. Тип свойства StatusDescription string (C#) и любые мои игры с разными Encoding: копирование в массив byte[] и дальнейшее копирование в string, якобы в другой кодировке, ни к чему не привели:
private static string UTF8ToWin1251(string src)
как только идет копирование в string, где-то в недрах автоматом, видимо, делается преобразование в utf-8.
Не помогает и это:
HttpContext ctx = HttpContext.Current;
ctx.Response.Charset = "windows-1251";
ctx.Response.ContentEncoding = Encoding.GetEncoding(1251);
ctx.Response.HeaderEncoding = Encoding.GetEncoding(1251);
Не помогает и настройка в Web.config:
<globalization requestEncoding="windows-1251" responseEncoding="windows-1251" />
Встречался ли кто-нибудь с такой проблемой? Кто что подскажет?