У меня проблема с моим WebApi. В зависимости от запроса ответ возвращается как json
или csv
. Для сериализации я использую NewtonSoft.Json
и свой собственный CsvMediaTypeFormatter
. Пока я тестирую его от Postman, ответ работает, как и ожидалось.
Что я борюсь с этим, что я хотел бы заставить браузер сохранить файл, если ответ будет csv
. Чтобы добиться этого, в моем CsvMediaTypeFormatter
я переопределил метод SetDefaultContentHeaders
следующим образом:
public override void SetDefaultContentHeaders(Type type, HttpContentHeaders headers, MediaTypeHeaderValue mediaType)
{
base.SetDefaultContentHeaders(type, headers, mediaType);
headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "content.csv"
};
}
Когда я тестирую свой API с помощью Postman, я вижу содержимое csv как тело, а заголовки показывают content-disposition: attachment; filename=content.csv
.
Но когда он попадает из браузера (я пробовал Firefox, Chrome и Edge), диалоговое окно «Сохранить файл как ...» отсутствует. Однако инструменты разработчика показывают, что вызов выполняется, а ответ имеет значение заголовка content-disposition
.
Я пробовал с различными значениями Content-type
: text/csv
, text/plain
, application/octet-stream
или application/x-unknown
, но безуспешно.
Любые идеи, что я делаю неправильно?