C# 如何通过RESTAPI传输图像?(内核2.0内置)

C# 如何通过RESTAPI传输图像?(内核2.0内置),c#,asp.net-core-mvc,C#,Asp.net Core Mvc,我正在尝试使用ASP.NET Core 2.0创建一个身份验证应用程序,并尝试创建一些REST方法。我想做的是创建一个GET方法,返回概要文件图像。我明白了: [Produces("application/json")] public class UserController : Controller { private readonly UserManager<ApplicationUser> _userManager; public UserProfileCon

我正在尝试使用ASP.NET Core 2.0创建一个身份验证应用程序,并尝试创建一些REST方法。我想做的是创建一个GET方法,返回概要文件图像。我明白了:

[Produces("application/json")]
public class UserController : Controller
{
    private readonly UserManager<ApplicationUser> _userManager;

    public UserProfileController(UserManager<ApplicationUser> userManager)
    {
        _userManager = userManager;
    }

    [HttpGet]
    public async Task<IActionResult> GetPicture(string username)
    {
        var user = await _userManager.FindByNameAsync(username);

        return Ok(user.Picture);
    }
}

但它没有像我希望的那样起作用。我认为这是内容类型的问题,所以我尝试将
[products(“application/json”)
更改为
[products”(“image/jpeg”)
或类似的东西。但它不起作用,因为它会给我返回一个406错误:不可接受。我没有主意了,所以我想问你是否可以帮我解决这个问题。提前谢谢你!

如果你想返回图像,那么只需返回带有适当mimetype的字节。返回
OK结果
就可以了ing使您传入的任何对象序列化,并将整个响应作为
application/json
发送,这显然不是图像。这就是您所需要的:

[HttpGet]
public async Task<IActionResult> GetPicture(string username)
{
    var user = await _userManager.FindByNameAsync(username);
    var bytes = Convert.FromBase64String(user.Picture);
    return File(bytes, "image/jpeg");
}
[HttpGet]
公共异步任务GetPicture(字符串用户名)
{
var user=await\u userManager.FindByNameAsync(用户名);
var bytes=Convert.FromBase64String(user.Picture);
返回文件(字节,“图像/jpeg”);
}

请注意,要返回文件,您只需
文件(user.Picture,…)
正如您所说,这就是我需要的。谢谢!
[HttpGet]
public async Task<IActionResult> GetPicture(string username)
{
    var user = await _userManager.FindByNameAsync(username);
    var bytes = Convert.FromBase64String(user.Picture);
    return File(bytes, "image/jpeg");
}