重命名项目后API Controller出现“未找到匹配HTTP资源”问题求助
排查ASP.NET Web API项目重命名后"找不到匹配请求URI的HTTP资源"问题
以下是针对性的排查解决步骤:
统一命名空间
检查所有控制器类的命名空间,确保从旧名称MyFirstQuestion0513更新为Flora_Assignment1,比如将namespace MyFirstQuestion0513.Controllers替换为namespace Flora_Assignment1.Controllers。同时同步修改项目中其他类(模型、过滤器等)的命名空间,避免框架无法识别控制器。核对路由配置
- 检查控制器类上的
[Route]特性,若存在硬编码旧项目名的自定义路由(如[Route("api/MyFirstQuestion0513/Users")]),需替换为新名称[Route("api/Flora_Assignment1/Users")];默认路由[Route("api/[controller]")]无需修改,但要确保控制器名称无拼写错误。 - 打开路由配置文件(旧版为
WebApiConfig.cs,.NET Core+为Program.cs),确认全局路由模板中没有硬编码旧项目名,比如config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional })这类默认配置无需改动,但如果有自定义全局路由需同步更新。
- 检查控制器类上的
修正项目属性
右键项目→属性:- 在"应用程序"选项卡中,将程序集名称和默认命名空间全部改为
Flora_Assignment1,替换旧的MyFirstQuestion0513。 - 若为旧版ASP.NET,检查"Web"选项卡的项目URL,确保IIS Express地址中无旧项目名,比如将
http://localhost:xxxx/MyFirstQuestion0513改为http://localhost:xxxx/Flora_Assignment1或根路径。
- 在"应用程序"选项卡中,将程序集名称和默认命名空间全部改为
清理缓存与编译文件
- 关闭Visual Studio和IIS Express进程。
- 删除项目目录下的隐藏文件夹
.vs(存储IIS Express旧配置),以及bin、obj文件夹(旧编译输出)。
确认控制器注册(.NET Core/.NET 5+)
若使用.NET Core及以上版本,在Program.cs中确保控制器注册正确:builder.Services.AddControllers(); // 若需指定程序集扫描,添加以下代码 builder.Services.AddControllers().AddApplicationPart(System.Reflection.Assembly.GetExecutingAssembly());避免因程序集扫描范围错误导致控制器未被框架加载。
验证请求URL
确认发送的请求URI与修改后的路由匹配,比如原来的http://localhost:xxxx/api/MyFirstQuestion0513/Values需对应改为http://localhost:xxxx/api/Values(默认路由场景),或匹配自定义路由的新路径。重建并重启调试
执行清理解决方案→重建解决方案,重新启动调试,确保所有编译输出为新项目名称的相关文件。
内容的提问来源于stack exchange,提问作者Flora Jiang
相关产品推荐
相关产品推荐

