2

私は安らかなサービス環境にいて、ServiceStack をサービス フレームワークとして使用しています。この時点で、サービスから直接リダイレクトを実行する必要があります。Get メソッドからリダイレクトしようとするとすぐに失敗します。これは、Get 関数が次のように見えるためです。

  public override object OnGet(ShareDTO request)
        {               
           HttpContext.Current.Response.Redirect(@"http://www.google.com");
            return new object();
        }

最初にリダイレクトしようとしていて、次に値を返そうとしているためかもしれませんが、これは単なる推測です。私がResponse.Redirectを使用したときはいつでも、常に.NET aspxページであり、サービス環境で試したことがないため、サービス環境でも可能かどうかはわかりません。

何かご意見は?

4

1 に答える 1

7

最も簡単な方法は、 custom を返すことですHttpResult。例:

public object Any(Request request)
{
    return HttpResult.Redirect("http://www.google.com");
}

これは、より明示的なものと同等です:

return new HttpResult
{
    StatusCode = HttpStatusCode.Found,
    Headers =
    {
        { HttpHeaders.Location, "http://www.google.com" },
    }
};

または、リクエスト フィルターまたはサービス内で、レスポンスに直接書き込むこともできます。

public object Any(Request request)
{
    base.Response.StatusCode = 302;
    base.Response.AddHeader(HttpHeaders.Location, "");
    base.Response.EndRequest();
    return null;
}
于 2012-05-08T01:58:33.660 に答える