0

http 302GET 要求を取得する REST サービスがあり、エラーと新しい URLを送信することなく、3 つの URL のいずれかにリダイレクトできるようにしたいと考えています。

    [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; 

別の解決策が見つかることを願っています。

4

1 に答える 1

4

リダイレクトは常にクライアント側の機能です。サーバーは、リソースが別の場所にあることをクライアントに通知するだけです。このリダイレクトを現在の操作とは別のサービス呼び出しに完全に隠すことを除いて、サーバー側のリダイレクトのようなものはありません。

ところで。REST は統一されたインターフェイスに関するものであり、リダイレクト (3xx) はこのインターフェイスの一部であるため、REST サービスを作成し、そのような機能が必要な場合は、共通の方法で使用する必要があります。REST クライアントは、統一されたインターフェースを正しく処理する責任があります。

于 2012-05-03T12:11:11.523 に答える