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

.NET Core发布后Zip文件下载异常问题求助

问题解决:.NET Core Zip文件下载在GoDaddy发布后报错

核心原因

本地运行时相对路径"zipfile/TCProjects.zip"能正确指向文件,但发布到GoDaddy服务器后,程序工作目录与本地不一致,导致无法定位文件,触发服务器报错。

解决方案步骤

1. 使用绝对路径获取文件(推荐)

在.NET Core中,需通过IWebHostEnvironment注入获取项目根目录路径,避免硬编码相对路径。修改控制器代码如下:

using Microsoft.AspNetCore.Hosting;
using System.IO;

public class SpecialController : Controller
{
    private readonly IWebHostEnvironment _webHostEnv;

    // 构造函数注入IWebHostEnvironment
    public SpecialController(IWebHostEnvironment webHostEnv)
    {
        _webHostEnv = webHostEnv;
    }

    public IActionResult Index()
    {
        return View();   
    }

    public IActionResult Download()
    {
        var fileName = "TCProjects.zip";
        // 根据zipfile文件夹位置选择对应路径组合方式
        // 如果zipfile在项目根目录(与Controllers同级):
        var filePath = Path.Combine(_webHostEnv.ContentRootPath, "zipfile", fileName);
        // 如果zipfile在wwwroot目录下:
        // var filePath = Path.Combine(_webHostEnv.WebRootPath, "zipfile", fileName);

        // 先校验文件是否存在,避免无意义报错
        if (!System.IO.File.Exists(filePath))
        {
            return NotFound("目标文件不存在");
        }

        // 使用using包裹流,确保资源被正确释放
        using var stream = new FileStream(filePath, FileMode.Open);
        return File(stream, "application/zip", fileName);
    }
}

2. 确保文件被正确发布

  • 在Visual Studio中右键项目内的zipfile文件夹和TCProjects.zip文件,选择属性;
  • 将复制到输出目录设置为如果较新则复制或始终复制,确保发布时文件同步到服务器。

3. 检查GoDaddy服务器权限

确认GoDaddy服务器上的zipfile文件夹和TCProjects.zip文件权限正确,允许ASP.NET Core进程读取该文件。若遇权限问题,可联系GoDaddy客服调整。

内容的提问来源于stack exchange,提问作者Gary Whitcher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:28:14