2

したがって、ASP.net MVC コントローラー/アクションに対して要求が行われます。これには関連するセッションがあります。アクションの一部として、WebClient オブジェクトをインスタンス化し、同じサイトにあるリソースを呼び出します。

ただし、同じサイト、同じアプリ プールであるにもかかわらず、WebClient は新しい要求を作成するため、セッションが異なります。(同じアプリプール、同じサイトにある場合、なぜWebClientが必要なのか、あなたの考えを知っています)。私は水を濁らせないようにこれらの詳細を省略しましたが、WebClient には理由があります。

WebClient に元の Request.Cookies コレクションから Cookie を割り当てることができれば、ASP.net は既存の Cookie に基づいて既存のセッションを検索できると理解しています。

だから私は2つの質問があると思います:

  1. これは正しいですか? WebClient によって作成された Request が元の要求の Session を取得することになる WebClient に Cookie を (何らかの方法で) 割り当てるとします。
  2. 現在の Request.Cookies を WebClient に割り当てるにはどうすればよいですか?

アップデート

私は、WebClient クラスでのCookieContainer の使用と、HttpCookieCollection および CookieContainer を使用した Cookie の送信の両方を調べて試しましたが、有効な解決策が見つかりませんでした。

Umbraco と asp.net MVC のバンドルされたソリューションがあり、webclient を使用して Umbraco にページを要求しています。私の調査では、上記のように Cookie が機能しない原因となる他の事実がある可能性があることも発見しました。ですから、最初の仕事は、Cookie に関するすべての情報が元のセッションを取得できるかどうかを調べることだと思いますか? または、私たちが行っていることについてもっと良い方法があるとしたら?

4

1 に答える 1

2

ここに示す実装を試すことができます。

HttpCookieCollection と CookieContainer を使用して Cookie を送信する

着信 Cookie を発信外部要求にコピーします。ただし、その実装は を使用するためのものHttpWebRequestです。代わりに WebClient を本当に使用する必要がある場合は、これが役に立つかもしれません: WebClient クラスで CookieContainer を使用する

于 2012-08-24T22:51:37.537 に答える