У меня есть веб-приложение Azure, которое возвращает двоичный файл с помощью FileStreamResult. Работает нормально ...
FileStreamResult fsr = File(blobStream, System.Net.Mime.MediaTypeNames.Application.Octet, "testfile.bin");
return fsr;
Я скопировал этот код в другое веб-приложение, возвращая точно такой же элемент BLOB-объекта, и он возвращает «поврежденный» файл, который почти в 2 раза больше (65 КБ против 117 КБ). Оба приложения используют одну и ту же версию .Net, одну и ту же учетную запись Azure, одну и ту же учетную запись хранения Azure, заголовки ответов одинаковы ... но что-то должно отличаться!
Обновление: FileStreamResult имеет правильные данные / размер в буфере. Если я скопирую данные из FileStream (до возвращения), все в порядке. Таким образом, FileStreamResult является правильным; проблема возникает, когда генерируется ответ. Что-то с тем, как FileStreamResult конвертируется. Я также пробовал ActionResult, та же проблема.
Обновление 2: все еще не могу понять это, но ... он заменяет символы не-UTF-8 на символы замены EF BF BD Unicode. Я не уверен почему. Я думал, что тип содержимого application / octet-stream будет указывать на то, что данные не интерпретируются. Также не могу понять, почему одно веб-приложение делает это, а другое - нет.