我可以在ASP.Net Web API控制器中使用多个Get方法

我想为Ex实现多个Get方法:

获取(int id,User userObj)Get(int storeId,User userObj)

是否可以像这样实现,我不想更改操作方法名称,因为在这种情况下我需要在URL中键入操作名称。

我正在考虑通过这个样本格式’ // localhost:2342 / ‘来执行操作方法,该格式不包含操作方法名称。

基本上你不能这样做,原因是两个方法都有相同的名称和完全相同的签名(相同的参数号和类型),这不会用C#编译,因为C#不允许这样做。

现在,使用Web API,如果你有两个方法具有相同的动作,如你的例子(两个GET),并具有相同的签名(int,用户),当你试图从客户端点击其中一个(如从Javascript )ASp.NET将尝试将传递的参数类型与方法(动作)进行匹配,因为两者都具有确切的签名,它将失败并引发有关歧义的exception。

因此,您可以将ActionName属性添加到方法中以区分它们,或者使用Route属性并为方法指定不同的路径。

希望有所帮助。

您需要在路径模板中添加操作名称,以在ASP.Net Web API控制器中实现多个GET方法。

WebApiConfig:

config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new {id = RouteParameter.Optional } ); 

控制器:

 public class TestController : ApiController { public DataSet GetStudentDetails(int iStudID) { } [HttpGet] public DataSet TeacherDetails(int iTeachID) { } } 

注意:动作/方法名称应以’ Get ‘开头,您需要在动作/方法上方指定[HttpGet]