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

升级至.Net Core:如何让Staging与Production槽共享公共视频课程目录

LMS媒体文件共享存储解决方案(.NET Core迁移)

核心思路

把6小时的视频课程从应用内部目录剥离,放到独立的共享存储服务/目录,让Staging和Production部署槽通过统一配置访问,彻底避免重复上传数GB文件的问题。

具体实现方案

1. 云环境首选:对象存储服务

如果是Azure、AWS这类云平台部署:

  • 用Blob存储(Azure Blob Storage)或对象存储(AWS S3)创建专属容器,把所有视频上传到容器中。
  • 在.NET Core应用的appsettings.json中配置存储连接字符串和容器名称,通过IConfiguration读取后,封装一个媒体服务:
    • 要么生成预签名临时URL给前端(适合需要权限控制的场景),要么直接配置静态资源映射(如果允许公开访问)。
  • 优势:自带冗余、可弹性扩容,两个部署槽完全共享同一份文件,无需任何同步操作。

2. 本地/私有部署:网络共享目录

如果是自建服务器环境:

  • 搭建SMB/NFS网络共享目录,把视频文件放到这个共享目录下。
  • 在两个部署槽的服务器上挂载该共享目录,然后在.NET Core中配置静态文件访问:
    var builder = WebApplication.CreateBuilder(args);
    
    builder.WebHost.Configure(app =>
    {
        var sharedPath = builder.Configuration["Courses:SharedPath"]; // 从配置读取共享路径
        app.UseStaticFiles(new StaticFileOptions
        {
            FileProvider = new PhysicalFileProvider(sharedPath),
            RequestPath = "/Courses" // 保持原访问路径不变,兼容旧链接
        });
    });
    
  • 注意:给应用运行用户(比如App Pool账户)分配共享目录的读写权限。

3. 部署槽统一配置技巧

不管用哪种存储方式,都要把存储路径/连接字符串放到应用级配置(比如Azure App Service的配置中心、本地的环境变量),不要硬编码:

  • 给Staging和Production槽设置完全相同的配置项(比如COURSES_STORAGE_CONFIG),确保两个槽指向同一个存储源。
  • 这样后续更新存储位置时,只需要修改配置,不用重新部署应用。

4. 安全与性能优化

  • 不要直接暴露存储地址:通过API接口代理视频请求,比如写一个/courses/{videoName}接口,内部从存储读取文件流返回给客户端,同时可以加身份验证、访问统计、限流逻辑。
    示例代码:
    [HttpGet("courses/{videoName}")]
    public async Task<IActionResult> StreamVideo(string videoName)
    {
        var storagePath = _configuration["Courses:SharedPath"];
        var fullPath = Path.Combine(storagePath, videoName);
        
        if (!System.IO.File.Exists(fullPath))
            return NotFound();
        
        // 支持断点续传
        var fileStream = new FileStream(fullPath, FileMode.Open, FileAccess.Read);
        return File(fileStream, "video/mp4", enableRangeProcessing: true);
    }
    
  • 启用范围请求:上面代码中的enableRangeProcessing: true可以让客户端实现断点续传,提升大视频的加载体验。

迁移步骤

  1. 把原.NET Framework应用Courses文件夹中的视频批量迁移到新的共享存储。
  2. 在Staging槽配置好存储访问逻辑,测试视频播放是否正常。
  3. 验证无误后,同步Production槽的配置,确保两个槽都指向同一存储。
  4. 清理原应用目录中的Courses文件夹,释放服务器空间。

关键注意事项

  • 给共享存储设置严格的访问权限,只允许应用服务器访问,防止数据泄露。
  • 定期备份共享存储中的视频文件,避免意外丢失。
  • 如果用云存储,开启CDN加速,提升全球用户的视频加载速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:40:14