我在网站上有一个Web API。如果api调用中没有参数,那么我可以点击它,但如果它上面有参数,那么我就无法点击它。以下是我所说的一个例子。
[HttpGet]
public string GetFacilityName2()
{
return "Good";
}
[HttpGet]
public string GetFacilityName(string projectNumber)
{
return "Never Get Here";
}
此时我的配置路由是默认路由。
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我正在使用以下两个网址。有效的网址是http://localhost/api/Controller/GetFacilityName2
无法使用的网址是http://localhost/api/Controller/GetFacilityName?projectNumber=44
UPDATE 我在API上有第三种方法就是这个。
[HttpGet]
public Address GetWorkplaceAddress(string projectNumber)
{
return new Address();
}
当我从API中删除它时,另一种方法开始工作。地址定义如此。
public class Address
{
public int Id { get; set; }
public string AddressValue { get; set; }
public string City { get; set; }
public int? State { get; set; }
public string Zip { get; set; }
public int? Country { get; set; }
}
答案 0 :(得分:2)
您不能通过参数重载控制器上的操作,该参数是您当前编写代码的方式。
您可以使用
指定要通过名称进行的操作RouteAttribute
routeTemplate: "api/{controller}/{action}/{id}",
OR 您可以通过Http动词(Get,Post,Put等)指定它,这是当前正在进行的操作。