我在apicontroller->中实现了以下3种方法
EnableFlowAnalytics:
Action = POST,MethodURI = api / ConfigurationApiController / EnableFlowAnalytics,路由图= config.Routes.MapHttpRoute(“ EnableFlowAnalytics Route”,“ api / ConfigurationApiController / EnableFlowAnalytics”,新的{controller =“ ConfigurationApi”});
DeleteFlowAnalytics:
Action = POST,MethodURI = api / ConfigurationApiController / DeleteFlowAnalytics,路由图= config.Routes.MapHttpRoute(“ DeleteFlowAnalytics Route”,“ api / ConfigurationApiController / DeleteFlowAnalytics”,新的{controller =“ ConfigurationApi”});
GetFlowAnalytics:
Action = GET,MethodURI = api / ConfigurationApiController / GetFlowAnalyticsConfig / subscriptions / {subscriptionGuid} / resourceGroups / {resourceGroupName} / networkSecurityGroups / {nsgName}, route map = config.Routes.MapHttpRoute(“ GetFlowAnalyticsConfig Route”,“ api / ConfigurationApiController / GetFlowAnalyticsConfig / subscriptions / {subscriptionGuid} / resourceGroups / {resourceGroupName} / networkSecurityGroups / {nsgName}”,新的{controller =“ ConfigurationApi”});
当我从客户端代码调用这三个方法时,EnableFlowAnalytics和GetFlowAnalyticsConfig正确路由,但DeleteFlowAnalytics未路由,而不是删除,该调用将再次转到EnableFlowAnalytics。我无法理解这种路由逻辑,因为URI并不明确,完全不同。
public class ConfigurationApiController : ApiController
{
[System.Web.Http.Route("api/ConfigurationApiController/DeleteFlowAnalytics")]
[System.Web.Http.ActionName("DeleteFlowAnalytics")]
public void DeleteFlowAnalytics(
string nsgResourceId)
{
//implementation}
[System.Web.Http.Route("api/ConfigurationApiController/EnableFlowAnalytics")]
[System.Web.Http.ActionName("EnableFlowAnalytics")]
public void EnableFlowAnalytics(
EnableFlowAnalyticsArgs enableFlowAnalytics)
{
//implemetation
}