質問

WebBrowser コントロールが使用する Cookie を読み書きする方法はありますか?

こんなことやってるんですが…

string resultHtml;
HttpWebRequest request = CreateMyHttpWebRequest(); // fills http headers and stuff
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
    resultHtml = sr.ReadToEnd();
}
WebBrowser browser = new WebBrowser();
browser.CookieContainer = request.CookieContainer; // i wish i could do this :(
browser.NavigateToString(resultHtml);  
役に立ちましたか?

解決

はWebBrowserコントロールは、具体的にはクッキー管理のためInternetSetCookie(実施例)とInternetGetCookie(例)関数を使用し、ネットワークのためのWinInetを使用します。ありませんWinInetのラッパー.NETのですが、あなたができるのp-呼び出します。

他のヒント

あなたのアプリが別のCookieストアを取得するように

WebBrowser制御およびクッキーに関する潜在的混乱の事の一つは、一見、その多くの場合、のルックスのです。たとえば、店舗あなたを識別するための永続的なCookieは、その後、あなたがコントロールをホストしているアプリの中から、そのサイトの中に記録されているように見えかどうかは、Internet Explorer経由でログインしているように見えるかどうかとは無関係になることを、サイトにログインしている場合ます。

実際には、あなたも別のアイデンティティにログインすることができます。

しかし、それは真実ではない実際には、WebBrowserをホスティングしている各アプリケーションは、したがって、独自のクッキーを取得するという結論を引き出すために自然なことかもしれませんが。そこクッキーの二組だけである:あなたは、通常のアプリで取得します何で他のセットは、(IEがデフォルトで実行されるものです)「低整合性」モードで使用されるものは、そのホストWebBrowserもあなたはIEが上昇し実行した場合、あなたは何を得るでしょう。

はい、あなたが正しい、InternetGetCookieExはHttpOnlyのクッキーを取得するための唯一の方法であり、それは、WebBrowserコントロールからグラブクッキーに好ましい方法である。

私は完全な例を掲載しましたここ

使用できます Application.GetCookie そして Application.SetCookie メソッド。

Application は多かれ少なかれ WPF に関連していますが、これらのメソッドは任意のデスクトップ .NET コードで使用できます。実際、それらはラッパーです インターネットGetCookieEx そして InternetSetCookieEx Windows API。

私は数日前に同じ問題に直面していました。 前の回答の例以外にも、ここではWebBrowserコントロール用のWin32のラッパーです。この実装の利点は、それがデフォルトWebBrowserコントロールすることをより多くのオプションを公開するということです。

残念ながら、あなたがしている計画は、WPFでそれを使用する場合は、ラッパーを作成する必要がありますので、それは、WPFネイティブではないかどうます。

http://code.google.com/p/csexwb2/する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top