Asp.net mvc 4 ASP.Net Web API自定义操作采用多个参数?
我想在Web API控制器中实现一个自定义操作,该控制器使用ASP.Net MVC 4 Web API框架接受多个参数Asp.net mvc 4 ASP.Net Web API自定义操作采用多个参数?,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc 4,Asp.net Web Api,我想在Web API控制器中实现一个自定义操作,该控制器使用ASP.Net MVC 4 Web API框架接受多个参数 public class APIRepositoryController : ApiController { ... [HttpGet, ActionName("retrieveObservationInfo")] public ObservationInfo retrieveObservationInfo( i
public class APIRepositoryController : ApiController
{
...
[HttpGet, ActionName("retrieveObservationInfo")]
public ObservationInfo retrieveObservationInfo(
int id,
String name1,
String name2)
{
//...do something...
return ObservationInfo;
}
...
}
这样我就可以在web浏览器中调用URL,如:
"http://[myserver]/mysite/api/APIRepository/retrieveObservationInfo?id=xxx&name1=xxx&name2=xxx"
然而,这从未奏效
是否还有其他需要配置的内容,例如WebAPI路由?目前我只使用默认的WebApiConfig.cs
提前感谢在您的情况下,默认情况下,Web API将基于HTTP动词而不是操作名称发送操作:
GET http://[myserver]/mysite/api/APIRepository/?id=xxx&name1=xxx&name2=xxx
要基于操作名称(如您所需)进行调度,您需要在默认路由之前添加以下路由:
routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
请注意,您目前无法(至少在没有hacks的情况下)在单个控制器中可靠地组合基于动词的路由和动作名称路由。您可以阅读更多信息。默认情况下,Web API将基于HTTP动词而不是操作名称来发送操作,在您的情况下:
GET http://[myserver]/mysite/api/APIRepository/?id=xxx&name1=xxx&name2=xxx
要基于操作名称(如您所需)进行调度,您需要在默认路由之前添加以下路由:
routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
请注意,您目前无法(至少在没有hacks的情况下)在单个控制器中可靠地组合基于动词的路由和动作名称路由。你可以阅读更多关于