2013-02-07 3 views
0

항목을 성공적으로 삽입 한 경우 웹 API 게시 메서드에서 위치 헤더를 설정하려고하지만 문제는 MVP 컨트롤러에서 해당 API 작업을 호출하려고하면 Url.Link에 예외가 발생합니다. '요청'이 누락되었습니다. 요청이 필요없이 URL을 생성 할 수있는 방법이 있습니까? 여기 Url.Link에 요청 매개 변수가 필요합니까?

는 웹 API를 우편 번호 - 당신은 웹 API 컨트롤러를 생성하고 그들에 행동을 호출 시작해서는 안

여기
public HttpResponseMessage Post (Product product) 
{ 
    ... 
    if (addedSuccessfully) 
    { 
     var response = new HttpResponseMessage {StatusCode = HttpStatusCode.Created}; 
     var uri = Url.Link("DefaultApi", new {id = product.ProductId}); 
     if (uri != null) 
      response.Headers.Location = new Uri(uri); 
     return response; 
    } 
    return new HttpResponseMessage {StatusCode = HttpStatusCode.Conflict}; 
} 

내가

_productController.Post(product); 

답변

1

이상적으로 그것을 호출하고 어떻게하면 않는 한 단위 테스트입니다. 컨트롤러에는 내부적으로 생성 될 때 웹 API 시스템에 의해 초기화되는 컨텍스트가 있습니다.

웹 API에서 반환되는 HttpResponseMessage로 수행중인 작업을 시나리오로 설명 할 수 있다면 해결 방법을 제시 할 수 있습니다.

+0

"게시"논리를 한 번 작성하여 자바 스크립트 아약스 호출과 MVC에서 사용할 수있게하려고했습니다. 내가해야 할 일은 데이터 액세스 레이어를 호출하는 mvc 컨트롤러에 몇 줄을 추가하는 것입니다. 코드/기능의 약간의 복제는 어떻게해야합니까? – camelCaseWarrior

관련 문제