Запросы нельзя применять к содержимому ответа типа «System.Net.Http.StreamContent».Содержание ответа должно быть ObjectContent - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь загрузить файл, используя knockout v3.2.0, webapi, odata, и получаю эту ошибку, когда пытаюсь вернуть файл как HttpResponseMessage.

Вот код моего контроллера:

 [EnableQuery]
public HttpResponseMessage GetAttachment([FromODataUri] int key)
{
    try
    { 
        DataAccess.Attachment a = db.Attachments.Where(x => x.AttachmentId == key).FirstOrDefault();               
        HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
        MemoryStream memStream = new MemoryStream();
        memStream.Write(a.AttachmentData, 0, a.AttachmentData.Length);
        result.Content = new StreamContent(memStream);
        result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
        result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
        result.Content.Headers.ContentDisposition.FileName = a.AttachmentName;
        return result;
        //return Request.CreateResponse(HttpStatusCode.OK, result);

    }
    catch (Exception exception)
    {
        Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exception.Message);
        return null;
    }
}

Вот как я пытаюсь скачать с JavaScript:

    self.downloadDocument = function (attachmentId) {

        var serviceRequestUrl = dbhdd.buildUrl.buildSPContextUrl("/api/Attachments(" + 1 + ")");
        window.location.href = serviceRequestUrl;           

    };

Что дает мне эту ошибку - Запросы не могут быть применены к содержимому ответа типа 'System.Net.Http.StreamContent'. Содержимое ответа должно быть ObjectContent.

Я относительно новичок в этом. Любые рекомендации по исправлению этого / альтернативного подхода будут высоко оценены.

1 Ответ

0 голосов
/ 28 июня 2019

Итак, я удалил [EnableQuery], и он работал как в IE, так и в Chrome!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...