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

Azure上.NET网站重部署时如何避免图片文件夹被覆盖?

解决方案:Azure App Service部署时避免用户图片被覆盖

1. 迁移图片到Azure Blob Storage(推荐方案)

这是Azure生态下存储用户生成内容(UGC)的标准做法,彻底解决部署覆盖问题,同时支持高并发、持久化和多实例共享:

  • 创建Azure Blob存储账户,新建一个容器(建议设置为私有,通过SAS签名或Azure AD授权访问,避免公开泄露)
  • 修改代码,将图片上传逻辑从本地wwwroot改为上传到Blob容器,数据库中存储Blob的URL或SAS链接(SAS链接适合私有容器的临时访问)
  • 前端展示图片时,直接使用Blob的URL或生成的SAS链接

示例代码片段(.NET项目):

// 注入BlobServiceClient(通过依赖注入配置)
private readonly BlobServiceClient _blobServiceClient;

public async Task<string> UploadImageAsync(IFormFile file)
{
    var containerClient = _blobServiceClient.GetBlobContainerClient("your-container-name");
    var blobClient = containerClient.GetBlobClient(Guid.NewGuid().ToString() + Path.GetExtension(file.FileName));
    await blobClient.UploadAsync(file.OpenReadStream(), overwrite: true);
    // 生成SAS链接(私有容器时使用)
    var sasBuilder = new BlobSasBuilder(BlobContainerPermissions.Read, DateTimeOffset.UtcNow.AddHours(24))
    {
        BlobName = blobClient.Name,
        BlobContainerName = containerClient.Name,
        Resource = "b"
    };
    var sasToken = blobClient.GenerateSasUri(sasBuilder).Query;
    return $"{blobClient.Uri.AbsoluteUri}{sasToken}";
}

2. 配置部署排除规则(临时过渡方案)

如果暂时不想迁移到Blob存储,可以通过部署配置排除图片目录,避免部署时被覆盖:

  • 使用Web Deploy(pubxml):在项目的发布配置文件(.pubxml)中添加排除规则:
    <PropertyGroup>
      <ExcludeFilesFromDeployment>wwwroot/images/**</ExcludeFilesFromDeployment>
    </PropertyGroup>
    
  • 使用GitHub Actions/Azure DevOps:在部署任务中设置排除路径,比如Azure DevOps的Azure Web App任务,在Additional Deployment Options里添加-exclude wwwroot/images/**参数

注意:App Service的本地存储(wwwroot)不适合长期存储UGC,因为当App Service缩放实例、重启或更换服务器时,本地文件可能丢失,仅适合临时过渡。

3. 挂载Azure Files共享(多实例共享本地存储方案)

将Azure Files共享挂载到App Service的非部署目录(或映射到wwwroot下的子目录但排除部署),实现多实例共享且部署不覆盖:

  • 创建Azure Files存储账户和文件共享
  • 在Azure Portal的App Service配置中,添加路径映射,将文件共享挂载到网站的某个目录(比如/site/images)
  • 修改代码,将图片上传路径改为这个挂载目录,数据库存储相对路径或完整挂载路径

这样部署时只会替换wwwroot目录,挂载的Azure Files内容不受影响,且所有App Service实例都能访问到相同的图片文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:06:29