我遇到并在API控制器上发出GET请求路由问题,我遇到的问题是因为我需要有3个单独的GET方法:
public IEnumerable<MyViewModel> Get()
public virtual MyViewModel Get(int id)
public virtual MyResponceData<MyViewModel> Get(MyRequestData requestData)
如果我注释掉第三种方法,那么另外两种方法按预期工作,但是如果有一种方法也可用,我得到{"Message":"An error has occurred."}
这没有多大帮助,但是当我评论方法时我会假设这是一个路由问题。
我只配置了默认路由,如下所示:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
到目前为止我尝试过的事情:
[FromUri]
属性添加到'MyRequestData'参数可能会解决问题。[Route("api/controller/otherGet")]
这有效,但如果可能的话,我宁愿在参数上路由。非常感谢任何帮助。
答案 0 :(得分:0)
经过研究,看起来并不可能(随意纠正我)。
我最后通过将Get()
和Get(MyRequestData requestData)
设为私有并创建其他get方法来解决此问题:
public virtual object Get([FromUri]MyRequestData requestData)
然后我根据Get
参数的设置方式调用相应的私有requestData
方法。