IIS 部署不能包含 asp.net core 2.2 razor 页面中 wwwroot 文件夹的文件

Posted

技术标签:

【中文标题】IIS 部署不能包含 asp.net core 2.2 razor 页面中 wwwroot 文件夹的文件【英文标题】:IIS deployment cannot contains files for wwwroot folder in asp.net core 2.2 razor pages 【发布时间】:2019-12-30 06:54:33 【问题描述】:

我的 asp.net core razor 页面应用程序的 wwwroot 文件夹中有 JS 和 CSS 的子文件夹。应用程序在本地环境中运行良好,但在 IIS 上部署项目时,wwwroot 文件夹中不包含任何子文件夹或文件。

即使我手动将文件夹和文件上传到 wwwroot 文件夹,它也不起作用,也不会在浏览器中加载 JS 和 CSS 文件。

请注意,我的应用程序中没有“环境”标签。

【问题讨论】:

静态文件浏览默认在 .net core 中被禁用。先启用它,然后你就可以在浏览器中访问像js这样的静态文件了 【参考方案1】:

尝试编辑您的 asp.net 核心项目的 .csproj 文件:

删除所有 ItemGroup 标记及其内容,然后添加此

<ItemGroup>
    <None Include="wwwroot\*" />
</ItemGroup>

您可以参考此链接了解更多详情:

Visual Studio publish profiles for ASP.NET Core app deployment

【讨论】:

【参考方案2】:

设置js/css路径有两种方式

    绝对路径 相对路径

绝对路径是,你必须在网络服务器中给出正确的路径。

http://<website name>/css/site.css

相对路径是,你可以给文件页面相对于当前页面。

假设您的页面来自http://&lt;website name&gt;/index.html 相对路径将是./css/site.css

最好尝试从浏览器访问 js 或 css 文件。可能是这些文件夹没有权限访问。

如果您打开开发工具,您可以在网络选项卡或控制台中看到错误。根据 HTTP 代码,你可以判断发生了什么

【讨论】:

在使用发布配置文件发布应用程序时,wwwroot 文件夹不包含任何子文件夹和文件。 您是否尝试在“复制到输出目录”选项下选择文件属性?【参考方案3】:

在我的场景中,我将 MVC 添加到我的 .Net 5 API

解决方案是添加

 app.UseStaticFiles();

到 Startup.cs

【讨论】:

以上是关于IIS 部署不能包含 asp.net core 2.2 razor 页面中 wwwroot 文件夹的文件的主要内容,如果未能解决你的问题,请参考以下文章

将 ASP.NET Core 部署到 IIS UI 和 API 到单独的网站

[Asp.Net Core]IIS部署

[Asp.Net Core]IIS部署

c#一个解决方案里包含.netcore3.1和asp.net两个项目,能正常发布iis吗?

IIS在ASP.NET Core下的两种部署模式

ASP.NET Core--.net core 3.1 部署到 IIS