无法在web api中的两个不同控制器下访问两个不同的操作

时间:2017-08-22 16:49:17

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

我有两个包含不同操作名称的控制器,我正在尝试访问它们,我能够访问Transmittal控制器下的PrepareTransmittalLetterPath但无法访问Concrete控制器下的PrepareConcreteReport。

可能是我的网络api路由无法正常工作。提前致谢。

传输控制器 - 其中TransmittalApi是一个类

public string PrepareTransmittalLetterPath(TransmittalApi transmittalApi)
{

}

Concrete Controller-其中ConcreteReportApi是一个类

public ConcreteReportApi PrepareConcreteReport(ConcreteReportApi concreteApi)
{

}

WebApiConfig -

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
           config.Routes.MapHttpRoute(
            name: "Api",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }

        );

    }
}

1 个答案:

答案 0 :(得分:1)

使用基于约定的路线意味着您的操作方法名称需要以Get....Post....开头。

  

要查找操作,Web API会查看HTTP方法,然后查找名称以该HTTP方法名称开头的操作。例如,对于GET请求,Web API会查找以“Get ...”开头的操作,例如“GetContact”或“GetAllContacts”。此约定仅适用于GET,POST,PUT和DELETE方法。您可以使用控制器上的属性启用其他HTTP方法。

有关详细信息,请参阅Routing in Asp.Net Web API