我试图将属性路由添加到ApiController,如下所示:
public class PhoneNumbersController : ApiController
{
// GET BY ID
public PhoneNumber GetById(int id)
{
return PhoneNumbersSelect(id)[0];
}
// GET BY ID TypeOFPhoneNumbers/Id
[Route("api/typeOfPhoneNumbers/{id}")]
public TypeOfPhoneNumber GetTypeOfPhoneNumberById(int id)
{
return TypeOfPhoneNumbersSelect(id)[0];
}
}
我的配置如下:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我在尝试拨打api / phoneNumbers / 1时遇到500错误。如果我注释掉GetTypeOfPhoneNumbersId()函数,默认控制器GetById()工作正常。我究竟做错了什么?我不允许在ApiController中声明一个唯一的路由,因为配置的方式是什么?
另外,正如我刚刚发现的那样,调用api / typeOfPhoneNumbers / 1会返回404错误,因此路由根本不起作用。
感谢您的帮助!
答案 0 :(得分:0)
我相信您错过了路线中的控制器名称(phoneNumbers),这是一个有效的代码(我已对其进行了测试)
public class PhoneNumbersController : ApiController
{
// GET BY ID
[HttpGet]
public PhoneNumber GetById(int id)
{
return PhoneNumbersSelect(id)[0];
}
// GET BY ID TypeOFPhoneNumbers/Id
[HttpGet]
[Route("api/phoneNumbers/typeOfPhoneNumbers/{id:int}")]
public TypeOfPhoneNumber GetTypeOfPhoneNumberById(int id)
{
return TypeOfPhoneNumbersSelect(id)[0];
}
}
答案 1 :(得分:0)
您是否可以尝试访问TypeOFPhoneNumbers的资源:~api / typeOfPhoneNumbers?id = 1