Asp.net web api WEB API中的属性路由覆盖控制器中的路由
我尝试将属性路由添加到ApicController,如下所示:Asp.net web api WEB API中的属性路由覆盖控制器中的路由,asp.net-web-api,asp.net-mvc-routing,Asp.net Web Api,Asp.net Mvc Routing,我尝试将属性路由添加到ApicController,如下所示: public class PhoneNumbersController : ApiController { // GET BY ID public PhoneNumber GetById(int id) { return PhoneNumbersSelect(id)[0]; } // GET BY ID TypeOFPhoneNumbers/Id [Route("ap
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错误。如果我注释掉getTypeOfPhoneNumberId()函数,则默认控制器GetById()可以正常工作。我做错了什么?由于配置的设置方式,是否不允许我在ApiController中声明唯一路由
另外,正如我刚刚发现的,调用api/typeOfPhoneNumbers/1会返回404错误,因此路由根本不起作用
谢谢你的帮助 我相信您错过了路线中的控制器名称(电话号码),这是一个工作代码(我已经测试过了)
你能试着像这样访问TypeOFPhoneNumbers的资源吗:~api/TypeOFPhoneNumbers?id=1路由是如何配置的?我知道这是旧的,但…
[Route(“~/api/TypeOFPhoneNumbers/{id}”)]
我想要在同一个控制器上这样的路由:“api/phoneNumbers/1”api/TypeOFPhoneNumbers/1”。
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];
}
}