我正在尝试将属性路由添加到 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/电话号码/1 时收到 500 错误。如果我注释掉 GetTypeOfPhoneNumbersId() 函数,默认控制器 GetById() 工作正常。 我做错了什么?由于配置的设置方式,我是否不允许在 ApiController 中声明唯一路由?
另外,正如我刚刚发现的那样,调用 api/typeOfPhoneNumbers/1 会返回 404 错误,因此路由根本不起作用。
感谢您的任何帮助!
您在路由中错过了控制器名称(电话号码),这是一个工作代码(我已经测试过了)
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];
}
}
你能尝试像这样访问TypeOFPhoneNumbers的资源吗:~api/typeOfPhoneNumbers?id=1