此错误通常是由于 ASP.NET Core 中的路由配置问题引起的。要解决此问题,您可以执行以下操作之一:
1.在 Startup.cs 文件的 ConfigureServices 方法中添加以下代码:
services.AddMvc(options => { options.EnableEndpointRouting = false; });
这将禁用终点路由,返回到使用 .NET Core 2.2 之前的默认 MVC 路由。这可能会解决此错误,并允许 ActionContext 找到与其关联的 IRouter。
2.在项目中检查路由配置,确保所有控制器和操作都有明确的路由配置,以确保 ActionContext 能够找到与其关联的 IRouter。例如,您的 Startup.cs 文件中可能具有以下路由配置:
app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller}/{action}/{id?}", defaults: new { controller = "Home", action = "Index" }); });
在这种情况下,请确保您的控制器和操作具有明确的路由配置,例如:
[Route("api/[controller]")] [ApiController] public class MyController : ControllerBase { [HttpGet("{id}")] public IActionResult Get(int id) { // code here } }
通过明确的路由配置,ActionContext 将能够找到自己与其相关联的 IRouter。
如果执行以上两个步骤后仍然无法解决问题,请确保您的控制器和操作都正确注册,并且依赖项注入中的配置正确。