繁体   English   中英

使用uri参数和查询字符串时的Web Api路由问题

[英]Web Api routing issue when using uri parameter and query string

我正在努力使一些Web Api 2.2路由正常工作。 我有一条路线:

config.Routes.MapHttpRoute(
            name: "OrgAdminGetOrgUsers",
            routeTemplate: "organisations/{id}/users",
            defaults: new { controller = "OrganisationDetails", action = "GetUsersInAnOrganisation" }                
        );

我遇到的问题是,当我添加查询字符串以使GET可搜索时,我的路由停止工作,并且得到404。 我到处都在寻找同时使用Uri参数和查询字符串的示例,但是我什么也找不到。 看来人们会做些什么? 当我从控制器中删除查询字符串和可选参数时,路由工作正常。

乌里:

organisations/3/users?orderby=asc&orderByColumn=surname&start=1&end=15 

控制器:

[HttpGet]
    public IEnumerable<User> GetUsersInAnOrganisation(int id, string email = "", string firstName = "", string surname = "", string orderByColumn = "", string orderBy = "asc", int start = -1, int end = -1)

在此先感谢您的帮助!

因此,我设法使其正常工作,需要使用[FromUri]作为id参数声明控制器:

[HttpGet]
public IEnumerable<User> GetUsersInAnOrganisation([FromUri] int id, string email = "", string firstName = "", string surname = "", string orderByColumn = "", string orderBy = "asc", int start = -1, int end = -1)

这对我有用-

配置-

GlobalConfiguration.Configuration.Routes.MapHttpRoute(
            "Default", 
            "api/{controller}/{action}/{id}", 
            defaults: new { id = RouteParameter.Optional });

具有查询参数的网址-

http://localhost:57597/api/OrganisationDetails/GetUsersInAnOrganisation/3?
orderby=asc&orderByColumn=surname&start=1&end=15

在此处输入图片说明

希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM