4

私は ServiceStack でサービスを構築しようとしていますが、その唯一の責任はリクエストを解釈し、リダイレクト応答を送信することです。このようなもの:

[Route("/redirect/", "POST")    
public class Redirect : IReturnVoid
{
    public string Something { get; set; }
}

public class RedirectService : Service
{
    public object Post(Redirect req)
    {
        // make some decisions about stuff

        return new HttpResult(){ StatusCode = HttpStatusCode.Redirect, Headers = {{HttpHeaders.Location, "place"}}};
    }
}

フィドラーを使用して最初のテストを行い、コンテンツ タイプを application/json に設定し、適切なリクエスト ボディを作成しました。これはまさに期待どおりでした。サービス リクエストは 302 レスポンスを返し、期待される場所にリダイレクトされました。

また、基本的な Html フォーム ポストを使用してこれをテストしました。アクションhttp://myserviceuri/redirect/も期待どおりに機能し、適切にリダイレクトされます。

ただし、SS c# クライアントを使用して同じサービスを呼び出そうとすると、問題が発生しました。aspx コード ビハインドまたは mvc コントローラーで次のコードを呼び出した場合

var client = new JsonServiceClient("uri);

client.post(new Redirect{Something = "something});

500 とエラー メッセージが表示されます。

The remote certificate is invalid according to the validation procedure.

自己証明書を備えた開発サーバーであるため、これは理にかなっています。しかし、他の方法でサービスを正常に呼び出すことができるため、これはニシンであると感じています。

別のタイプの C# クライアントを使用して要求を行う必要がありますか、それともカスタム ヘッダーをさらに設定する必要がありますか? 私がやろうとしていることを根本的に理解していませんか?

さらに情報が必要な場合はお知らせください。ありがとう。

4

1 に答える 1

1

ここで起きていることは、JsonServiceClientが喜んでリダイレクトに従い、期待以上のことを行っているということです。

後世のために関連する質問と回答を参照します(-この問題をかなり前に解決したことを願っています...)。

ServiceStack サービスに POST し、Location ヘッダーを取得します

基本的に、回答に記載されている.netWebRequestまたはServiceStack拡張機能を使用して、リダイレクトを確認し、適切と思われるように動作します。

于 2014-02-04T06:15:45.450 に答える