.NET Core站点部署后指向开发服务器wwwroot的问题求助
解决.NET Core站点部署到IIS时找不到wwwroot目录的问题
问题根源
发布生成的staticwebassets.runtime.json文件中硬编码了开发服务器上的wwwroot绝对路径,导致生产IIS环境尝试访问仅存在于开发机的目录,触发DirectoryNotFoundException。
解决方案
1. 仅在开发环境启用静态Web资产加载
修改Program.cs,限制静态Web资产仅在开发环境生效,避免生产环境读取错误的路径配置:
var builder = WebApplication.CreateBuilder(args); // 仅开发环境加载静态Web资产 if (builder.Environment.IsDevelopment()) { builder.WebHost.UseStaticWebAssets(); } // 后续的服务注册、中间件配置等代码... var app = builder.Build(); // ...其他中间件设置 app.Run();
2. 确保wwwroot内容被正确发布到输出目录
在项目的.csproj文件中添加或确认以下配置,保证wwwroot下的所有文件都会被复制到发布目录:
<ItemGroup> <Content Include="wwwroot/**/*" CopyToPublishDirectory="PreserveNewest" /> </ItemGroup>
该配置会自动同步wwwroot的所有文件到发布目标路径,确保生产环境能访问到静态资源目录。
3. 清理并重新发布
- 删除开发服务器上的
C:\temp\stagingPublish目录,避免残留旧的配置文件 - 重新执行发布操作,生成干净的发布包后再复制到生产IIS服务器
4. 验证IIS部署配置
- 确认IIS站点的物理路径指向生产服务器上的发布目录
- 确保应用程序池的.NET CLR版本设置为
无托管代码,并选择对应.NET 6.0的运行时版本
内容的提问来源于stack exchange,提问作者rory
相关产品推荐
相关产品推荐

