C# 图像不';t从C中的System.Drawing.Image渲染#

C# 图像不';t从C中的System.Drawing.Image渲染#,c#,image,asp.net-web-api,C#,Image,Asp.net Web Api,我正在尝试从BlobUrl获取图像,但它无法在浏览器中渲染 我的代码控制器: [HttpGet] public System.Drawing.Image GetImage() { var profileImage = Db.Candidate.Include(x => x.ProfileImage).AsNoTracking().Single().ProfileImage; var urlWithSharedAccessToken = _fileService.GetBl

我正在尝试从BlobUrl获取图像,但它无法在浏览器中渲染

我的代码控制器:

[HttpGet]
public System.Drawing.Image GetImage()
{

    var profileImage = Db.Candidate.Include(x => x.ProfileImage).AsNoTracking().Single().ProfileImage;
    var urlWithSharedAccessToken = _fileService.GetBlobUrl(profileImage.FileGuid, DateTime.Now.AddHours(1));

    WebClient wc = new WebClient();
    byte[] bytes = wc.DownloadData(urlWithSharedAccessToken);
    MemoryStream ms = new MemoryStream(bytes);
    System.Drawing.Image img = System.Drawing.Image.FromStream(ms);

    return img;
}
以下是浏览器的响应:


有谁能告诉我,我应该如何从System.Drawing.image

中渲染实际图像?我已经使用
HttpResponseMessage
返回了
ByteArrayContent
。我的完整代码:

[HttpGet]
[Route("profile_image")]
public async Task<IHttpActionResult> GetProfileImageData()
{
    var profileImage = Db.Candidate.Include(x => x.ProfileImage).AsNoTracking().Single().ProfileImage;

    using (var file = await _fileService.DownloadFileAsync(profileImage.FileGuid))
    {
        var memory = new MemoryStream();
        await file.CopyToAsync(memory);

        // Create response message
        var message = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new ByteArrayContent(memory.ToArray())
        };

        //Otroligt att man ska behöva kladda med detta, men "filename" i Content Disposition accepterar enbart us-ascii strängar i vissa webbläsare
        var encoder = Encoding.GetEncoding("us-ascii", new EncoderReplacementFallback(string.Empty), new DecoderExceptionFallback());
        string asciiFileName = encoder.GetString(encoder.GetBytes(profileImage.FileName));

        // Set content headers
        message.Content.Headers.ContentLength = memory.Length;
        message.Content.Headers.ContentType = new MediaTypeHeaderValue(profileImage.ContentType ?? "application/octet-stream");
        message.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = asciiFileName,
            Size = file.Length
        };

        return new ResponseMessageResult(message);
    }
}
[HttpGet]
[路线(“剖面图”)]
公共异步任务GetProfileImageData()
{
var profileImage=Db.Candidate.Include(x=>x.profileImage).AsNoTracking().Single().profileImage;
使用(var file=await _fileService.DownloadFileAsync(profileImage.FileGuid))
{
var memory=newmemoryStream();
等待文件.CopyToAsync(内存);
//创建响应消息
var消息=新的HttpResponseMessage(HttpStatusCode.OK)
{
Content=newbyteArray内容(memory.ToArray())
};
//Otroligt att man ska behöva kladda med detta,men“filename”i内容配置接受者使用ascii strängar i vissa webbläsare
var encoder=Encoding.GetEncoding(“us ascii”,new EncoderReplacementFallback(string.Empty),new DecoderExceptionFallback());
string ascifilename=encoder.GetString(encoder.GetBytes(profileImage.FileName));
//设置内容标题
message.Content.Headers.ContentLength=内存.Length;
message.Content.Headers.ContentType=新的MediaTypeHeaderValue(profileImage.ContentType???“应用程序/八位字节流”);
message.Content.Headers.ContentDisposition=新的ContentDispositionHeaderValue(“附件”)
{
FileName=ascifilename,
Size=file.Length
};
返回新的ResponseMessageResult(消息);
}
}

返回响应中的字节:-)