我有两个包含不同操作名称的控制器,我正在尝试访问它们,我能够访问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 }
);
}
}
答案 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。