2012-05-03 6 views
0

GET要求を受け取るRESTサービスがあり、http 302エラーを送信せずに3つの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を見たとき、私は、リダイレクトする方法を持っていません。

自動的に行う方法はありますか?私がこれを行うことを望んでいるのは、この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

残念ながら正しいですが、私はリダイレクトを隠すことを望んでいましたが、リダイレクト用のコードを既に追加しています。ありがとうございました。 –

関連する問題