首页 > 解决方案 > 在 ASP.NET Core Web API 3.1+ 中继承路由属性

问题描述

我正在看书ASP.NET Core in Action,但根据解释我发现了一个奇怪的行为。作者在书中说:

要调用Start您需要遵循的方法api/car/start

[Route("api")]
public class BaseController : Controller { }

[Route("car")]
public class CarController : BaseController
{
   [Route("start")]
   [Route("ignition")]
   [Route("/start-car")]
   public IActionResult Start()
   {
   /* method implementation*/
   }
}

但解释不正确,在测试样本中,它car/start不是通过 URL工作的api/car/start

在此处输入图像描述 谁能解释为什么api忽略了与作者所说的完全相反的内容?

标签: c#asp.net-coreasp.net-web-api

解决方案


因为它不是那样工作的。继承时,路由属性会覆盖基类路由属性。

作者认为,Route Attribute 在继承中的工作方式与类和方法是一样的。

来源:https ://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-3.1


推荐阅读