c# - 在 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
!
解决方案
因为它不是那样工作的。继承时,路由属性会覆盖基类路由属性。
作者认为,Route Attribute 在继承中的工作方式与类和方法是一样的。
来源:https ://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-3.1
推荐阅读
- cmake - 在 CMake 中一次编译和链接库
- python - 如何手动更改条件
- odata - odata 仅从扩展的子记录集中获取第一条记录?
- javascript - JavaScript:如何在继续执行之前等待相机访问?
- javascript - 为什么 React 中的 JavaScript 方法是未定义的?
- xamarin.forms - ipa 和 apk 包中缺少文件
- liquibase - liquibase:我可以通过引用先前的变更集 id 来回滚删除表吗?
- jarsigner - Jar 签名者:无法打开 jar 文件
- c++ - 埃拉托色尼筛。不确定如何准确实施
- python - 如果值相同,则合并两个字典列表