2012-05-03 4 views
0

GET 요청을받는 REST 서비스가 있으며 http 302 오류를 보내지 않고 세 URL 중 하나로 리디렉션 할 수 있도록하고 싶습니다. 새로운 URL.HTTP를 반환하지 않고 WCF REST 함수에서 다른 URL로 리디렉션 302

[OperationContract(Name = "MyService")] 
    [WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "/myservice/{option}")] 
    public System.IO.Stream MyService(String option) 

이것은 내가 정의,하지만 내가 WebOperationContext.Current.OutgoingResponse 볼 때 내가 리디렉션하는 방법이없는 방법이다.

자동으로 수행 할 수있는 방법이 있습니까? 내가 이것을하기를 바라고있는 이유는이 웹 서비스가 프로그램에 의해 호출 될 수 있으며 프로그램에서 302 오류를 잡아 내지 않고 수동으로 리다이렉트 할 필요가 없다는 것입니다. http://christopherdeweese.com/blog2/post/redirecting-from-a-wcf-rest-service

이 작업을 수행합니다 : 난 그냥 다른 해결책을 찾기 위해 희망

WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Redirect; 
WebOperationContext.Current.OutgoingResponse.Location = "/someOtherPage.aspx"; 
return null; 

그것은 올바른 방법을 표시이를 따르는 것입니다.

답변

3

리디렉션은 항상 클라이언트 측 기능입니다. 서버는 리소스가 다른 곳에 있다는 것을 클라이언트에게 알립니다. 이 리디렉션을 현재 작업에서 별도의 서비스 호출로 완전히 숨기는 것을 제외하고는 서버 측 리디렉션과 같은 것이 없습니다.

btw. REST는 거의 동일한 인터페이스이고 redirect (3xx)는이 인터페이스의 일부이므로 REST 서비스를 만들고 그러한 기능을 원할 경우 일반적인 방법으로 사용해야합니다. REST 클라이언트는 일관된 인터페이스를 올바르게 처리합니다.

+0

불행히도 당신은 맞습니다, 나는 리다이렉트를 숨기고 싶었지만 리다이렉션을위한 코드를 이미 추가했습니다. 단지 나를위한 더 나은 솔루션을 찾고 싶습니다. 고맙습니다. –

관련 문제