Azure Web App返回的二进制文件“修改”大小不正确

时间:2019-04-26 18:16:59

标签: azure azure-web-app-service

我有一个Azure Web应用程序,该应用程序使用FileStreamResult返回一个二进制文件。效果很好...

FileStreamResult fsr = File(blobStream, System.Net.Mime.MediaTypeNames.Application.Octet, "testfile.bin");
return fsr;

我将此代码复制到另一个Web应用程序,返回了完全相同的Blob项,它返回的“损坏”文件几乎大了2倍(65K对117K)。这两个应用程序都使用相同版本的.Net,相同的Azure帐户,相同的Azure存储帐户,响应标头相同...但是必须有所不同!

更新:FileStreamResult在缓冲区中具有正确的数据/大小。如果我将数据从FileStream中复制出来(返回之前),就可以了。所以FileStreamResult是正确的;生成响应时会发生问题。有关如何转换FileStreamResult的信息。我也尝试过ActionResult,同样的问题。

更新2:仍然无法弄清楚,但是...它将非UTF-8字符替换为EF BF BD unicode替换字符。我不知道为什么。我认为应用程序/八位字节流的内容类型将指示未解释数据。也找不到为什么一个Web应用程序执行此操作,而另一个Web应用程序不执行此操作。

2 个答案:

答案 0 :(得分:0)

您可以将软件包Swashbuckle.AspNetCore更新到最新版本4.0.1

这里是您可以参考的类似issue

答案 1 :(得分:0)

最终成功...证明基本控制器上有一个ActionFilterAttribute强制进行编码。