c# - 如何通过 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 的架构
解决方案
你的问题描述的内容我个人试过了,先展示我的代码上传到github,大家可以参考。并建议您阅读官方文档。
//for wwwroot folder
app.UseStaticFiles();
//for wwwroot outside folder
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(env.ContentRootPath, "StaticContent")),
RequestPath = "/StaticContent"
});
我的项目结构:
编译选项,包括自定义文件夹。
该项目的所有准备工作已完成。以下是我对您的问题的建议:
- 如果您使用的是 Azure Web 应用服务,则可以直接使用项目访问 API 和静态资源。如果要使用cdn,可以
Networking
在webapp中设置,也可以实现自己的需求。
如果单纯使用存储中的静态网站,那么我们的.net core项目好像不能直接在里面运行,应该是缺少运行环境(我的测试结果是这样的,我没有' t尝试了其他方法来解决它)。
我的建议是,如果你真的需要使用存储中的静态资源文件来实现,那就把原来的静态资源文件复制进去,但是它们与访问api的链接URL是两个不同的URL。
综上所述,我建议尝试我的方案一,它肯定会对你有很好的帮助。
推荐阅读
- javascript - 如何在 cypress 中链接 cy.get
- python - 通过 Python 命令和 dbutils 在 Databricks 上安装 Maven 库
- c++ - 如何在我的安装程序中包含 .NET Core(Windows 和 macOS)
- python - 如何使用python内置库读取视频文件并保存帧(图像)?
- excel - Excel - 从另一个满足特定条件的表格范围填充表格范围
- ios - 将导航栏标题文本更改为自定义颜色?
- java - 重复写入数据到文件
- reactjs - 如何在 React 中使用 api 数据填充下拉列表?
- excel - 如何将多个测试数据表(新表,如 Excel)添加到单个 .CSV 文件中,然后在 Robot Framework 中读取?
- ruby-on-rails - 在 Rails API 中使用omniauth-google-oauth2