2012-09-13 3 views
1

은 내가 MVC 4.0 웹 API 응용 프로그램을 구축, 다음과 같은 경로를 사용하려는 해요 :액션 매칭 프로세스에서 라우트 매개 변수를 취하는 방법은 무엇입니까?

/api/{appId}/{controller}/{id1}/{action}/{id2}

내가의 appId 매개 변수를 사용하고 HttpContext.Current.Items 컬렉션의 값을 설정하는 데 사용하려는 액션 매칭 프로세스에서 벗어나기를 원합니다. 내 컨트롤러의 모든 모든 동작 메소드에 appId 매개 변수를 추가하고 싶지는 않습니다.

아무도 아이디어를 얻는 방법이 있습니까?

답변

3
  1. 매개 변수로 appId를 포함 할 필요가 없습니다. 웹 API는 최적의 경로 매개 변수 하위 집합과 일치하는 작업으로 라우팅합니다. 따라서 appId 매개 변수가없는 작업은 id1, id2 및 작업 이름 ({action}의 항목)과 일치합니다.

  2. 컨트롤러 작업 내에서 appId의 값을 가져 오려면 ControllerContext.RouteData.Values ​​사전에서 경로 값을 가져올 수 있습니다. (. 그것은 당신이있는 거 시나리오 있는지 확실하지하니 특별히 HttpContext.Current.Items에 저장해야합니까?)

이 문서에서는 몇 가지 구체적으로 행동 선택을 설명 http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection

+0

가 마이크를 주셔서 감사합니다! –

관련 문제