簡體   English   中英

在 ASP.NET Core MVC 中從 Azure blob 容器提供 static 個文件

[英]Serve static files from Azure blob container in ASP.NET Core MVC

我將 web 應用程序的 static 個文件(js、css 和圖像等)存儲在一個 Azure Blob 容器中,並希望在帶有app.UseStaticFiles的應用程序中使用這些文件。 這可能嗎?

以前我使用PhysicalFileProvider到 map 文件夾路徑,但現在我想要 map 一個 Azure Blob 容器。

app.UseStaticFiles(new StaticFileOptions()
                       {
                           FileProvider = new PhysicalFileProvider("c:/folder"),
                           RequestPath = new PathString("/cdn"),
                           ServeUnknownFileTypes = true
                       });

請檢查以下參考資料:

  • 通過 Azure 提供 asp.net mvc 中的文件 Blob 存儲可以通過使用 NuGet package Strathweb.AspNetCore.AzureBlobFileProvider來實現
  • 檢查您是否可以將您的 static 內容放在具有讀取權限的公共容器中。

公共 class 啟動 { 公共啟動(IConfiguration 配置){ 配置 = 配置; }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        var blobOptions = new AzureBlobOptions
        {
           ConnectionString = "{CONNECTION STRING}",
           DocumentContainer = "{BLOB CONTAINER NAME}"
        }
        
        var azureBlobFileProvider = new AzureBlobFileProvider(blobOptions);
        services.AddSingleton(azureBlobFileProvider);
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        var blobFileProvider = app.ApplicationServices.GetRequiredService<AzureBlobFileProvider>();
        app.UseStaticFiles(new StaticFileOptions()
        {
            FileProvider = blobFileProvider,
            RequestPath = "/files"
        });

        app.UseDirectoryBrowser(new DirectoryBrowserOptions
        {
            FileProvider = blobFileProvider,
            RequestPath = "/files"
        });
    }
}

參考GitHub -Strathweb.AspNetCore.AzureBlobFileProvider

Azure .NET 核心 Web 應用程序和在哪里找到 Static 文件 - CodeProject

您還可以使用這些選項的組合,通過開發中的 PhysicalFileProvider 使用本地 static 文件,然后嘗試在生產中切換到 Blob 存儲。

例子:

//  static files under wwwroot handled normally
app.UseStaticFiles();

// The path in the url we will manage
var staticFilesPath =
    Configuration.GetSection("StaticFilesPath").Value;

if (env.IsDevelopment())
{
    // The local/network folder containing static files we are mapping to
    var staticFilesFolder =
        Configuration.GetSection("StaticFilesFolder").Value;
    if (!string.IsNullOrWhiteSpace(staticFilesFolder))
    {
        app.UseStaticFiles(new StaticFileOptions
        {
            FileProvider = new PhysicalFileProvider(staticFilesFolder),
            RequestPath = staticFilesPath
        });
    }
}
else
{
    //  map to blob storage for the path
    var blobFileProvider =
        app.ApplicationServices.GetRequiredService<AzureBlobFileProvider>();
    if (blobFileProvider != null)
    {
        app.UseStaticFiles(new StaticFileOptions()
        {
            FileProvider = blobFileProvider,
            RequestPath = staticFilesPath
        });
    }
}

請參考Azure .NET Core Web App 和 Static 文件的位置 – CodeHelper.Net

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM