.NET 5迁移至.NET 6后IIS Express运行提示localhost页面无法找到
.NET 5迁移至.NET 6后IIS Express返回404修复方案
该问题与你使用的托管模型(旧版Startup+Program模式、.NET 6顶级语句Program模式)没有直接关联,核心原因是迁移过程中IIS Express相关配置未同步更新,按以下顺序排查修复即可:
- 校验
launchSettings.json完整配置
你目前只提供了iisSettings节点的内容,需要确认文件内profiles节点下的IIS Express配置完整,缺失该配置会导致IIS Express无法将请求正确转发到ASP.NET Core进程,标准配置如下:
"profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } }
- 检查项目根目录
web.config配置
IIS/IIS Express托管ASP.NET Core程序依赖AspNetCoreModuleV2模块,迁移过程中该文件很容易被遗漏或覆盖。如果项目根目录不存在该文件直接新建即可,核心配置如下:
注意:需要将arguments属性中的dll文件名替换为你项目实际输出的程序集名称
<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\你的项目程序集名.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> </system.webServer> </location> </configuration>
- 检查.csproj项目文件配置
打开项目的.csproj文件,确认<PropertyGroup>节点中存在以下IIS Express相关配置,缺失会导致VS启动IIS Express时使用错误的托管模式:
<UseIISExpress>true</UseIISExpress> <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
- 清理IIS Express历史缓存
迁移前的旧站点配置会残留在IIS Express本地配置文件中,导致路由映射失效,按以下步骤清理:- 关闭所有Visual Studio窗口,在任务管理器中结束所有运行中的
IIS Express进程 - 打开路径
%userprofile%\Documents\IISExpress\config,删除目录下的applicationhost.config文件 - 重新打开Visual Studio,进入项目属性的调试页,保存一次IIS Express配置,VS会自动生成新的合法站点配置文件
- 关闭所有Visual Studio窗口,在任务管理器中结束所有运行中的
- 基础逻辑校验
- 确认
HomeController为public类型,类名以Controller结尾且继承自Controller基类,Index方法为公开的IActionResult类型,未添加[NonAction]等拦截特性 - 确认
Views/Home/Index.cshtml文件存在,文件属性中「生成操作」设置为「内容」,避免运行时找不到视图返回404 - 清理解决方案后重新生成,按F5启动时查看VS输出窗口「ASP.NET Core Web Server」分类的日志,确认实际监听端口与launchSettings.json中配置的44352一致,端口被占用时IIS Express会自动切换端口,访问旧端口也会返回404
- 确认
内容的提问来源于stack exchange,提问作者bmurrell30
相关产品推荐
相关产品推荐

