You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# ASP.NET MVC IIS部署后IWebHostEnvironment.WebRootPath路径错误

异常产生原因
  • 发布时夹带了开发环境配置文件:项目Properties目录下的launchSettings.json或者环境专属配置文件appsettings.Development.json被一同发布到了部署目录。ASP.NET Core默认会匹配当前运行环境加载对应配置,如果站点被识别为Development环境,会直接读取launchSettings.json中预设的webRoot路径,也就是你开发阶段的本地路径。
  • IIS站点配置了错误的环境变量:你在IIS对应站点的「配置编辑器」→ system.webServer/aspNetCore节点下,手动设置了ASPNETCORE_ENVIRONMENT值为Development,甚至额外配置了WEBROOT_PATH环境变量指向开发路径,程序启动时会优先读取该硬编码值。
  • 启动代码中硬编码了WebRoot路径:Program.cs或Startup.cs中手动调用了UseWebRoot("c:\\dev\\projects\\site_A\\wwwroot")方法写死路径,或是自定义了IWebHostEnvironment初始化逻辑,覆盖了默认的站点根目录读取规则,无论部署到什么位置都会使用硬编码的路径。
  • 发布目录存在旧文件残留:发布操作未清空目标目录,之前的开发环境配置、编译缓存文件残留,导致程序加载了旧的路径配置。
排查修复方案
  • 检查部署目录d:\www\qa,删除其中的launchSettings.json、appsettings.Development.json文件,后续发布时调整发布规则,排除开发环境专属配置文件。
  • 打开IIS对应站点的配置编辑器,检查aspNetCore节点下的环境变量,将ASPNETCORE_ENVIRONMENT调整为Staging或Production,删除手动配置的WEBROOT_PATH变量。
  • 检查项目启动代码,删除硬编码的UseWebRoot调用,确认没有自定义覆盖IWebHostEnvironment的WebRoot路径逻辑。
  • 重新发布时勾选「删除目标目录中的所有现有文件」选项,避免旧文件残留影响。

内容的提问来源于stack exchange,提问作者Developer Webs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:48:03