【问题标题】:Unable to Stream Picture from Azure Blob无法从 Azure Blob 流式传输图片
【发布时间】:2018-06-01 21:33:54
【问题描述】:

我有一个休息端点,我似乎无法从有效的 Azure Blob 中流出图片。当我在调试中查看流时,它具有适当的字节大小并且看起来很健康。

以下代码有效(为简洁起见,未显示 Azure 凭据/容器的加载),但在输出返回时失败(请参阅下面的 500)

if (await blockBlob.ExistsAsync())
{
     var stream = new MemoryStream();

     await blockBlob.DownloadToStreamAsync(stream);

    return new FileStreamResult(stream, "image/jpeg"); 

结果 500(错误:内部服务器错误):

server: Kestrel    
x-sourcefiles: =?UTF-8BQzpcX0NvZGVcUGV0U21hcnRcUG9kc1xQT0RTXGN1c3RvbWVyc1xwaG90b3NcZG93bmxvYWQ=?= 
x-powered-by: ASP.NET   
date: Fri, 01 Jun 2018 21:21:18 GMT   
content-length: 0

端点

[HttpGet]
[Route("/photos/download")]
[SwaggerOperation("Photo Download")]
public async Task<IActionResult> DownloadPhoto([FromQuery]long? photoId)

这个硬编码的返回就像一个魅力

var image = System.IO.File.OpenRead(@"C:\Temp\info.png");
return File(image, "image/jpeg");

我可以在 Azure 存储资源管理器中查看和下载命名的 blob。

【问题讨论】:

  • 您无法从 500 中获取实际的异常详细信息?
  • 不行,Postman和swagger页面都报,如图所示报头即可。

标签: c# azure azure-storage asp.net-core-2.0


【解决方案1】:

您似乎忘记将流位置返回到 0。

下载流后添加stream.Position = 0;即可。

【讨论】:

    猜你喜欢
    • 2019-01-27
    • 2019-02-06
    • 2013-11-08
    • 1970-01-01
    • 2019-12-29
    • 2021-12-05
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多