Asp.net web api Web API路由机制是否真的足够聪明,可以接受控制器名称的复数形式?

Asp.net web api Web API路由机制是否真的足够聪明,可以接受控制器名称的复数形式?,asp.net-web-api,controller,asp.net-web-api-routing,Asp.net Web Api,Controller,Asp.net Web Api Routing,我在DeliveryController.cs中有这样一种方法: [Route("api/Deliveries/Count")] public int GetCountOfDeliveryRecords() { return _deliveryRepository.GetCount(); } 还有其他一些方法使用“交付”而不是发现的“交付”。但为什么还可以找到控制器名称的复数形式?Web API路由引擎是否真的首先精确地查找API调用,然后,如果没有找到,则查找其单数 下面,当传递“…

我在DeliveryController.cs中有这样一种方法:

[Route("api/Deliveries/Count")]
public int GetCountOfDeliveryRecords()
{
    return _deliveryRepository.GetCount();
}
还有其他一些方法使用“交付”而不是发现的“交付”。但为什么还可以找到控制器名称的复数形式?Web API路由引擎是否真的首先精确地查找API调用,然后,如果没有找到,则查找其单数


下面,当传递“…api/Deliveries/Count”时,它是否首先查找DeliveriesController,如果未找到,则搜索DeliveryController?

当您将
路由
属性直接应用于方法时,路由引擎通过反射准确地知道映射到该路由的方法的名称,并且它不会尝试根据名称来定位它

使用属性路由时,即使不遵守约定,也可以使用任何想要的命名

这条路线完全有效:

[Route("api/whatever")]
public int UnrelatedName()
{
    return _deliveryRepository.GetCount();
}

之所以找到复数形式,是因为您自己将其放在了
路由
属性中。。。我误解了这个问题吗?是的,我想你误解了;我可能没说清楚。我知道上面的代码是如何找到的,但是它如何知道从那里调用哪些函数呢。那么,在这种情况下,这不重要吗?我可以使用“[Route(“api/DoctorOfDivinity/Count”)]”或“[Route(“api/DoctorOfFudge/Count”)]”吗?