首页 > 解决方案 > 如何通过 Azure 中的 Dot Net core Web APi 提供静态网站内容

问题描述

我有一个在 Azure 中开发、部署和运行的 Dot Net Core Web API。它现在用作 API 网关。当用户在浏览器中点击 url 的根目录时,我想提供 HTML 内容。

并且我们的网站内容通过静态网站发布到 CDN 后面的天蓝色存储。我按照以下链接中的步骤进行了设置。

https://microsoft.github.io/AzureTipsAndTricks/blog/tip203.html

我们如何在我的 dot net core web api 中从 azure 存储中提供这些内容并将该内容返回给浏览器。

我有以下代码适用于我在本地拥有的内容。

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();

            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapDefaultControllerRoute();
            });
        }

我应该阅读静态网站 blob 下的 azure 存储内容并将其返回,还是只重定向到静态网站或 CDN url。

我正在尝试按照下面的答案 2 中的建议使用 ocelot 的架构

ASP.NET Core Api-Gateway 中间件

标签: c#azure.net-coreasp.net-core-webapi

解决方案


你的问题描述的内容我个人试过了,先展示我的代码上传到github,大家可以参考。并建议您阅读官方文档

//for wwwroot folder
app.UseStaticFiles();

//for wwwroot outside folder

app.UseStaticFiles(new StaticFileOptions
{
     FileProvider = new PhysicalFileProvider(
         Path.Combine(env.ContentRootPath, "StaticContent")),
     RequestPath = "/StaticContent"
});

我的项目结构:

在此处输入图像描述

编译选项,包括自定义文件夹。

在此处输入图像描述

该项目的所有准备工作已完成。以下是我对您的问题的建议:

  1. 如果您使用的是 Azure Web 应用服务,则可以直接使用项目访问 API 和静态资源。如果要使用cdn,可以Networking在webapp中设置,也可以实现自己的需求。

在此处输入图像描述

  1. 如果单纯使用存储中的静态网站,那么我们的.net core项目好像不能直接在里面运行,应该是缺少运行环境(我的测试结果是这样的,我没有' t尝试了其他方法来解决它)。 在此处输入图像描述

    我的建议是,如果你真的需要使用存储中的静态资源文件来实现,那就把原来的静态资源文件复制进去,但是它们与访问api的链接URL是两个不同的URL。

综上所述,我建议尝试我的方案一,它肯定会对你有很好的帮助。


推荐阅读