ASP.NET Core WebApi — загрузка файла вызывает сообщение об ошибке

В моем проекте asp.net webapi мне нужно вернуть строковые данные json в виде файла. Что также важно, я хочу, чтобы код состояния ответа был установлен на 200 (успешно). Я нашел много примеров, когда люди используют MemoryStream и FileStreamResult для получения нужного файла с сервера, но у меня это не работает.

К сожалению, я всегда получаю сообщение в браузере "Непредвиденная ошибка", хотя код сервера работает без каких-либо исключений. Я проверил детали запроса в браузере, и у него есть код состояния «Неверный запрос» (400).

Мой код:

[HttpGet()]
public async Task<IActionResult> Download()
{
    string jsonData = "example data";
    byte[] byteArray = Encoding.UTF8.GetBytes(jsonData);
    var stream = new MemoryStream(byteArray);

    var result  =  new FileStreamResult(stream, new MediaTypeHeaderValue("text/json"))
                       {
                           FileDownloadName = "testFile.json"
                       };
    return result;
}

person Ellbar    schedule 27.02.2017    source источник
comment
Похоже, вы ищете в этом вопросе есть ответ. Вы пробовали return Created(result);?   -  person Juliën    schedule 27.02.2017
comment
У меня это не работает :(. Теперь я получаю сообщение: ERR_INVALID_RESPONSE. Пожалуйста, используйте ваш пример как поток, основанный на строковой переменной, вместо того, чтобы получать его из существующего файла на сервере.   -  person Ellbar    schedule 28.02.2017


Ответы (1)


person    schedule
comment
Я не могу скомпилировать ваше решение из-за 2 ошибок: (1): «FileStreamResult» не содержит определения для «Content», и не может быть найден метод расширения «Content», принимающий первый аргумент типа «FileStreamResult» (2): Невозможно неявно преобразовать тип System.Net.Http.StringContent в System.Net.Http.HttpResponseMessage - person Ellbar; 27.02.2017
comment
Извиняюсь. Попробуй это. - person agfc; 27.02.2017
comment
Теперь код компилируется, но результат возвращается в браузере в виде json, а не в виде загруженного файла. - person Ellbar; 28.02.2017