2015-07-20 68 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