Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用uri参数和查询字符串时出现Web Api路由问题_C#_Url Routing_Asp.net Web Api2 - Fatal编程技术网

C# 使用uri参数和查询字符串时出现Web Api路由问题

C# 使用uri参数和查询字符串时出现Web Api路由问题,c#,url-routing,asp.net-web-api2,C#,Url Routing,Asp.net Web Api2,我正在努力使一些Web Api 2.2路由正常工作。我有一条路线: config.Routes.MapHttpRoute( name: "OrgAdminGetOrgUsers", routeTemplate: "organisations/{id}/users", defaults: new { controller = "OrganisationDetails", action = "GetUsersInAnOrgani

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

config.Routes.MapHttpRoute(
            name: "OrgAdminGetOrgUsers",
            routeTemplate: "organisations/{id}/users",
            defaults: new { controller = "OrganisationDetails", action = "GetUsersInAnOrganisation" }                
        );
我遇到的问题是,当我添加一个查询字符串以使GET可搜索时,我的路由停止工作,得到404。我到处都找过使用Uri参数和查询字符串的例子,但什么都找不到。这似乎是人们经常做的事情?当我从控制器中删除查询字符串和可选参数时,路由工作正常

Uri:

控制器:

[HttpGet]
    public IEnumerable<User> GetUsersInAnOrganisation(int id, string email = "", string firstName = "", string surname = "", string orderByColumn = "", string orderBy = "asc", int start = -1, int end = -1)
[HttpGet]
public IEnumerable GetUserSinanOrganization(int id,string email=“”,string firstName=“”,string姓氏=”,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 });
带有查询参数的url-

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


希望这会有所帮助。

因此我已设法使其工作,需要使用[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)
[HttpGet]
公共IEnumerable GetUsersInAnorganization([FromUri]int-id,string-email=“”,string-firstName=“”,string-Nastname=“”,string-orderByColumn=“”,string-orderByColumn=“”,string-orderBy=“asc”,int-start=-1,int-end=-1)

我不想使用那个URL模板,我想让组织/ {ID} /用户作为这个URI的样式(在中间有一个参数)将在整个API中使用。
[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)