API控制器实现2个具有不同URI的POST方法,对一个POST的调用未正确路由

时间:2019-05-10 08:45:38

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

我在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
 }

0 个答案:

没有答案