首页 > 解决方案 > 发布到 Azure 时,Area 中的 ASP.NET Core 文件夹未加载资产

问题描述

在我的 ASP.Net Core 3.1 项目 (Visual Studio 2019) 中,我创建了一个区域文件夹并添加了一个名为“Admin”的区域。在 Admin 中,我添加了一个名为“assets”的静态文件夹。这包含我所有的管理区域的 CSS、JS、图像文件:

在此处输入图像描述

在 startup.cs 文件中,我添加了以下代码,以便可以链接到 assets 文件夹中的静态文件:

在此处输入图像描述

我从这里获取了该代码:https ://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-3.1#serve-files-outside-of-web-root

视图中的示例链接如下所示:

在此处输入图像描述

当我在本地运行项目并浏览到 /admin 时,所有资产(CSS、JS、图像等)都在加载并且站点正确显示。

但是,当我将项目发布到 azurewebsites.net 时,当我浏览到 /admin 时没有加载资产!视图已呈现,但 CSS、JS 和图像链接不起作用。

我检查了服务器,资产文件夹和文件在服务器上。

对于如何在 Azure 上进行这项工作的任何帮助或建议将不胜感激!

编辑: 当我在页面上打开 Web 开发工具 (F12) 时,链接显示为 404 错误: 在此处输入图像描述

“/assets/css/icons.min.css”不存在,但为什么它不像我在本地运行时那样指向/Areas/Admin/assets/css?

编辑: 在 Azure 上检查,似乎只有 .json 文件(以及其中包含 .json 文件的文件夹)正在发布!我直接链接到其中一个 .json 文件并且它浏览正确,所以我需要弄清楚为什么 VS 没有发布所有文件。 在此处输入图像描述

标签: asp.netasp.net-mvcazurevisual-studioasp.net-core

解决方案


Path.Combine(env.ContentRootPath, "Areas/Admin/assets")),RequestPath = "/assets"

  1. 这行代码意味着当你请求“/assets”时,它会映射到“Areas/Admin/assets”。
  2. 根据您提供的图片,请求的路径没有问题。
  3. 但是根据404错误提示,通常会检查请求的文件是否存在。
  4. 您前面提到的文件已经存在
    • 我还想建议您检查icons.min.css文件是否确实存在于Areas/Admin/assets/css目录中。
  5. 如果您确定这些文件确实存在,我怀疑问题可能是由文件夹权限引起的。

☑编辑

检查 Azure,似乎只有 .json 文件(以及其中包含 .json 文件的文件夹)正在发布!我直接链接到其中一个 .json 文件并且它可以正确浏览,所以我需要弄清楚为什么 VS 没有发布所有文件。

  1. 默认情况下发布 ASP.NET Core Web 应用程序时,将包含以下资产:
    1. 构建工件
    2. 与以下 globbing 模式匹配的文件夹和文件:
      • ***.config(例如,web.config)
      • ***.json(例如,appsettings.json)
      • wwwroot**
  2. 您需要在发布时包含所需的文件。

推荐阅读