Я пишу файловую службу, используя веб-API Asp.Net. Служба извлекает файлы (Css, Excel, Csv и т. д.) с SQL Server и предоставляет их в ответ на запросы Get.
Мой первый тестовый пример для файлов Css. Проблема в том, что, хотя я вижу правильные данные на стороне сервера, когда браузер извлекает/декодирует их, результаты искажаются. Проблема, похоже, связана с кодировками.
Вот заголовки запроса/ответа в FireFox:
Когда я нажимаю на вкладку ответа в FireBug, вот как это выглядит:
Результаты выглядят так, как будто ascii отображается как utf8. Это HTML-представление в FireBug:
Вышеприведенный пример — это iFrame внутри приложения Facebook, в котором работает ssl.
Если я возьму URL-адрес и открою его прямо в браузере, он работает и правильно отображает мой Css:
Таким образом, когда я извлекаю свой файл Css из тега в своем приложении Facebook, я получаю мусор (проблема с кодировкой?). Если я получаю его прямо из браузера, он работает.
Мой код CssFormatter MediaTypeFormatter:
public override Task WriteToStreamAsync(Type type, object value, Stream writeStream, HttpContent content, TransportContext transportContext)
{
var taskSource = new TaskCompletionSource<object>();
try
{
var incomingFile = value as FileRestService.Entity.IFile;
var ms = new MemoryStream(incomingFile.DataBuffer);
ms.CopyTo(writeStream);
ms.Flush();
taskSource.SetResult(writeStream);
}
catch (Exception e)
{
taskSource.SetException(e);
}
return taskSource.Task;
}
Я неправильно создаю поток ответов? Я заметил, что в заголовках ответов не указана кодировка. Это проблема?