我有以下代码:
[Produces("application/json")]
[Route("api/[controller]")]
public class MarketReportInstancesTableController : BaseController
{
internal readonly MyIRIntegrationDbContext Context;
public MarketReportInstancesTableController(ILogger<MarketReportInstancesTableController> logger,
MyIRIntegrationDbContext context) : base(logger)
{
Context = context;
}
[HttpGet (Name ="PageData")]
public IActionResult PageData([FromQuery] IDataTablesRequest request)
{
.... methd body in here
}
我尝试使用以下网址访问:
http://somehost/pca/api/MarketReportInstancesTable/pagedata
哪些不起作用,但
http://somehost/pca/api/MarketReportInstancesTable/
工作。
我的问题是,为什么路线会这样做?我想在同一个WebAPI控制器中有许多路径。
我接近错了吗?
答案 0 :(得分:1)
路线中没有路线模板。您只有路线名称
路由名称可用于根据特定路由生成URL。 路由名称对路由的URL匹配行为没有影响,仅用于生成URL。路由名称在应用程序范围内必须是唯一的。
强调我的
//GET api/MarketReportInstancesTable/pagedata
[HttpGet ("pagedata", Name ="PageData")]
public IActionResult PageData([FromQuery] IDataTablesRequest request) {
//.... methd body in here
}
在没有路由模板的情况下使用[HttpGet]
与[HttpGet("")]
相同,before
将映射到具有路由前缀的控制器的根。
这解释了为什么你的root调用有效。