2013-01-03 2 views
1

내 웹 프로젝트에 AttributeRouting 및 WebApi를 구현했습니다. 그리고 http://localhost/apis/test?adminId=yyy과 같은 URL을 GetSomeInfo으로 연결하려고합니다. 하지만 몇 가지 문제가 발생하면 URL http://localhost/apis/testhttp://localhost/apis/test?adminId=yyy이 모두 GetEntity으로 연결됩니다. 그것은 매개 변수 adminId을 인식하지 못하는 것 같아요, 그것은 URL에 매개 변수가 없다고 생각합니다. 그래서 그것은 GetEntity 액션으로 바뀝니다. 누구든지 나를 도울 수 있습니까? 감사.WebAPI URL 일치 문제

내가 지금까지 한 것은 아래처럼 보입니다. 작동하지 않습니다.

[RoutePrefix("apis/test")] 
public class SampleController : ApiController 
{ 


    [HttpGet] 
    [GET("")] 
    public string GetEntity([FromUri]string name = null, [FromUri]string id = null) 
    { 
     .... 
    } 

    [HttpGet] 
    [GET("")] 
    public string GetSomeInfo([FromUri]string adminId) 
    { 
     .... 
    } 

} 

편집은

global.asax의 노선도 코드는 다음과 같습니다. 그리고 나는 http://localhost/api/Sample?adminId=2BD48CF9-95EB-48D2-A1B2-1AFA273E586D이라는 URL이 GetSomeInfo 액션으로 라우팅 될 수 있음을 발견했습니다. 임의의 매개 변수없이 URL http://localhost/api/SampleGetEntity으로 연결됩니다. 그게 내가 원하는거야. 내 질문에 RoutePrefixFromUri 작동하지 않는 이유는 무엇입니까?

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{id}", 
       defaults: new { id = UrlParameter.Optional } 
      ); 


      routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Login", action = "Login", id = UrlParameter.Optional } 
      ); 
+0

문제점은 무엇입니까? 오류가 있습니까? – k0stya

+0

@ k0stya 무엇인가를 잘못해서 죄송합니다. 내 게시물을 업데이트했습니다. –

답변

1

global.asax.cs에서 추가 경로를 정의해야하기 때문에 이 부분을 참조하십시오. Single controller with multiple GET methods in ASP.NET Web API

+0

안녕하세요, Pitchai, 먼저 내 업데이트 된 게시물을 검토하십시오. 그리고 내 응용 프로그램에서는 URL과 일치시키기 위해'RoutePrefix'를 사용했습니다. 당신이 언급 한 해결책이 제 경우에는없는 것 같습니다. 감사. –

+0

그런 다음 [GET ("url/{id}")]과 같이 GetSomeInfo 메소드에 경로 제약 조건을 추가 할 수 있습니다. 이제 이것은/url/1에 응답 할 것입니다 (GET을 통해) –

+0

고마워요.하지만 제 질문에, 나는/url? 1에 응답하는 방법을 모르겠습니다. 그것을 만들 수 있습니까? –