ASP.NET Core中的ResponseType

时间:2018-01-18 09:56:05

标签: c# asp.net asp.net-mvc asp.net-core

我刚从ASP.Net 4.5将项目移至ASP.Net Core。 我使用的REST API用于返回blob,但现在返回JSON。

这是旧代码:

[HttpGet]
[ResponseType(typeof(HttpResponseMessage))]
[Route("Download/{documentId}")]
public async Task<HttpResponseMessage> DownloadDocument(string documentId)
{
    try
    {
        var result = await TheDocumentService.DownloadDocument(documentId);

        return result;
    }
    catch (Exception ex)
    {
        return new HttpResponseMessage
        {
            StatusCode = HttpStatusCode.InternalServerError,
            Content = new StringContent(ex.Message)
        };
    }
}

ASP.net Core中的代码是相同的,除了[ResponseType(typeof(HttpResponseMessage))]在ASP.Net Core中不起作用,两个解决方案中的返回结果也是相同的。

但是当查看来自客户端服务器的响应时,他们会有所不同。

enter image description here

所以唯一不同的是[ResponseType(typeof(HttpResponseMessage))]。在asp.net核心中是否有相同的东西?

1 个答案:

答案 0 :(得分:1)

How to to return an image with Web API Get method

我通过改变我的回报来解决它:

[HttpGet]
[Route("Download/{documentId}")]
public async Task<IActionResult> DownloadDocument(string documentId)
{
    try
    {
        var result = await TheDocumentService.DownloadDocument(documentId);
        var content = await result.Content.ReadAsByteArrayAsync();
        return File(content, result.Content.Headers.ContentType.ToString());
    }
    catch (Exception ex)
    {
        return StatusCode(500, ex);
    }
}