我刚从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中不起作用,两个解决方案中的返回结果也是相同的。
但是当查看来自客户端服务器的响应时,他们会有所不同。
所以唯一不同的是[ResponseType(typeof(HttpResponseMessage))]
。在asp.net核心中是否有相同的东西?
答案 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);
}
}