CookieコンテナをRestsharpおよびASP.NETセッションで使用するにはどうすればよいですか?
-
27-10-2019 - |
質問
コントローラーで認証アクションを呼び出すことができ、それが成功した場合は、セッションに認証されたユーザーの詳細を保存します。
ただし、Restsharpを独立したクライアントとして使用しているため、セッション内にリクエストを維持する方法がわかりません。承認を成功させたときにサーバーからキーを取り戻す必要があります。その後、将来のコールごとに、セッションに保存されているキーのキーを確認する必要があります。
RestsharpのRestClientがCookieセットですべての将来のリクエストを正しく送信するようにするにはどうすればよいですか。
私はhttpFactoryでクッキーコンテナを見てきましたが、これについてはどこにもドキュメントがないようです。
解決 2
最後にこれを解決しました。基本的にクッキーコンテナを作成し、応答からセッションクッキーをCookieコンテナに追加します。将来のすべてのリクエストには、このCookieが含まれます。
var sessionCookie = response.Cookies.SingleOrDefault(x => x.Name == "ASP.NET_SessionId");
if (sessionCookie != null)
{
_cookieJar.Add(new Cookie(sessionCookie.Name, sessionCookie.Value, sessionCookie.Path, sessionCookie.Domain));
}
他のヒント
誰かが同様の問題を抱えている場合、上記は単純な「各リクエストの後にクッキーを保管する」という問題には完全に必要ではないことに注意してください。上記のJaffasアプローチですが、CookeTieToreを休憩クライアントに取り付けるだけで、クッキーを保存することができます 自動的. 。私はこれが誰にとっても解決策ではないことを知っています。 ひたむきな クッキーのみ。一方、それはあなたの人生を休憩クライアントをテストするために楽にします! (Jaffas変数を使いやすく使用しました):
CookieContainer _cookieJar = new CookieContainer();
var client = new RestClient("http://<test-server>/letteron"); //test URL
client.CookieContainer = _cookieJar;
所属していません StackOverflow