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://<website name>/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 到单独的网站