2012-09-25 1 views
2

사이트 컨트롤러와 API 컨트롤러가있는 MVC4 프로젝트에서 작업하고 있습니다. 사이트 컨트롤러 중 하나에서 API 컨트롤러로 요청을 보내려면 어떻게합니까?MVC4의 다른 컨트롤러에서 API 컨트롤러에 요청하는 방법은 무엇입니까?

public class FooController : ApiController { 
    [HttpGet] 
    public int Add(int a, int b) { 
     return a + b; 
    } 
} 

가 어떻게이 컨트롤러에서 /FooController/Add?a=1;b=2에 요청을 보낼 것입니다 : 예를 들어

,이처럼 보이는 APiController가있을 수 있습니다?

public class BarController : Controller { 
    [HttpGet] 
    public int AddOneAndTwo() { 
     //What goes here? 
    } 
} 

편집 : 난 정말 내 사이트 컨트롤러에서 내 ApiController 클래스의 호출 방법이었다하고 싶어, 나는 내가 그것을 작동하도록 일부 MVC4 마법을 연상했다 가정 무엇. 펠릭스와 나 사이의 의견에 따라, 나는 내 사이트 컨트롤러에 내 ApiController의 인스턴스를 만들고 거기에서부터 시작할 수있다. 하지만 여전히 HTTP를 통해 ApiController 메소드에 액세스해야하는 경우 boy howdy는 내 원래 질문에 대한 Felix의 답변입니다.

+1

당신이 왜 같은 프로젝트 안에 그러나, 당신은 http://restsharp.org/을 사용할 수 HTTP를 통해 요청을하지 보내려면 그냥 행동 방식을 부르는거야? – Felix

+0

조치 방법을 어떻게 부르겠습니까? 내 사이트 컨트롤러가 본질적으로 ApiController 인스턴스를 인식하지 못하기 때문에 HTTP 요청을 보내야한다고 생각했습니다. (저는 MVC4 = P를 처음 사용합니다) – Kevin

+1

BarController와 같은 프로젝트에 웹 API 컨트롤러가 있다면 프로젝트의 다른 클래스처럼 액세스 할 수 있습니다. 이 경우 MVC 핸들러, 속성 및 필터 중 어떤 것도 호출되지 않습니다 ... 내 영어에 대한 용서 – Felix

답변

2

restsharp와 코드는 다음과 같이 될 것이다 :

protected IRestResponse GetResponse(int a, int b) 
    { 
     var client = new RestClient 
     { 
      BaseUrl = "http://localhost:8888/api/FooController" 
     }; 
     var request = new RestRequest 
     { 
      DateFormat = DataFormat.Xml.ToString(), 
      Resource = "Add", 
      Method = Method.GET 
     }; 
     request.AddParameter("application/json", 
      JsonSerializer.JsonSerialize(new {a, b}), 
      ParameterType.RequestBody); 
     return client.Execute(request); 
    } 
관련 문제