2012-05-03 36 views
0

我有一個REST服務,得到一個GET請求,我希望它能夠重定向到的三個網址之一,而不必發送http 302錯誤新的網址。重定向從WCF REST功能的另一個URL,而不返回HTTP 302

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

這是我如何把它定義,但當我看到WebOperationContext.Current.OutgoingResponse我沒有對重定向的方法。

有沒有什麼辦法來自動做到這一點?我希望這樣做的原因是,這個Web服務可以通過程序來調用,這將是對程序簡單到沒有趕上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是關於統一的接口和重定向(3XX)此接口的一部分,所以如果你創建REST服務,你想這樣的功能,你應該在共同的方式來使用它。 REST客戶端負責正確處理統一接口。

+0

不幸的是,你是正確的,我希望能隱藏重定向,但我已經添加了重定向代碼,只是希望能找到一個更好的(對我來說)的解決方案。謝謝。 –

相關問題