You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET WebAPI如何返回携带描述、版本等完整属性的文件

解决方法

你当前的实现将文件读取为字节数组返回,仅传递了文件的纯二进制内容,既缺少文件元数据对应的响应头配置,对EXE这类PE格式文件使用通用的application/octet-streamMIME类型,也会导致客户端无法正确识别文件格式,读取内置的版本、图标、描述等资源。

按如下方式修改代码即可解决:

[HttpGet("Download_File")]
public IActionResult Download_File()
{
     var filePath = Path.GetFullPath("./myfile.exe");
     // 直接用PhysicalFile返回物理文件,不要提前读入内存
     return PhysicalFile(
         filePath, 
         "application/vnd.microsoft.portable-executable", // EXE文件对应的专用MIME类型
         Path.GetFileName(filePath),
         lastModified: File.GetLastWriteTime(filePath) // 传入文件修改时间,保留文件系统属性
     );
}

额外检查项

如果修改后仍然存在问题,按以下步骤排查:

  • 确认服务器上存放的源myfile.exe本身属性完整,没有损坏
  • 检查项目是否开启了响应压缩,压缩会破坏EXE的PE结构导致属性丢失,可在Program.cs中配置排除EXE文件的压缩规则:
builder.Services.AddResponseCompression(opt =>
{
    opt.ExcludedMimeTypes.Add("application/vnd.microsoft.portable-executable");
});

内容的提问来源于stack exchange,提问作者Rafael Wille

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:15:04