2015-07-20 69 views
0

我在使用URL导航到我的ListPeople方法时遇到问题。如果我在我的URL中输入localhost:12345/People?peopleId=405&age=24,它工作正常;但是,当我将localhost:12345/People?peopleId=405传入我的URL时,它会返回404错误。自定义URL路由处理使用C#控制器的可选参数

404错误消息:

"No HTTP resource was found that matches the request URI'http://localhost:12345/People?peopleId=405'."

我怎样才能改变我的ListPeople控制器的路由,以便它节选BOTH网址?

控制器

[HttpGet] 
[ReturnDescription("List of People")] 
[CustomActionName("")] 
[Description("List of people for given peopleId and age")] 
public ApiResponse<Status, IEnumerable<People>> ListPeople(int peopleId, int? age) 
{ 
    return _personProject.ListPeople(peopleId, age); 
} 

成功URL

localhost:12345/People?peopleId=405&age=24 

失败URL

localhost:12345/People?peopleId=405 

回答

1

经上所记,你^ h AVE表示URL的方法:

/People?peopleId={0}&age={0} 

你必须做的过载,将只接受peopleId,因为一个方法只能是一个路由的目标,当你像这样的自动设置它。我会建议将是使一个简单的过载:

public ApiResponse<Status, IEnumerable<People>> ListPeople(int peopleID) 
{ 
    return ListPeople(peopleId, null); 
} 
+0

这个很棒,非常感谢! – ChaseHardin

1

对不起,我不能写comment.So here.If找你使用API​​来检查您的WebApiConfig我必须写。您必须在此配置中定义您的参数。

赞;

config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}/{peopleid}/{age}", 
      defaults: new { peopleid = RouteParameter.Optional, age = RouteParameter.Optional } 
     ); 

只是一个例子。我想我可以帮助你。

+0

感谢您的帮助@CoderWho。我最终使用了上面的答案,但给了你一个向上的箭头! :) – ChaseHardin

+0

欢迎你的朋友 – CoderWho