シンプルな winform アプリケーションがあります。最初の実行では、ユーザーが Web サイトにログインできるようにログイン画面が実行されます。次のように成功すると、セッション Cookie が保存されます。
Properties.Settings.Default["cookies"] = cookies;
Properties.Settings.Default.Save();
それが完了すると、ログイン フォームが非表示になり、新しいメイン フォームが実行されます。このメインフォームでは、cookiecontainer が読み取られ、再度保存されます。
CookieContainer cookies = Properties.Settings.Default.cookies;
魅力のように機能します。セッション Cookie はまだそこにあり、すべて問題ありません。その後、次のように Cookie を使用して、Web サイトに対して新しいリクエストが行われます。
private string htmlGet(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "text/html";
request.CookieContainer = cookies;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
return responseFromServer;
}
正常に動作します。リクエストが完了し、特定のユーザー関連データが文字列で見つかりました。
しかし、プログラムを再起動すると、奇妙なことが起こります。
プログラムが開始する前に、このコードを実行して、Cookie を調べて初回実行を確認します。
if (Properties.Settings.Default.cookies == null)
{
Application.Run(new login());
}
else
{
Application.Run(new main());
}
実際、最初の実行後は でProperties.Settings.Default.cookies
はないnull
ため、メイン フォームは によって開始されProgram.cs
ます。
奇妙なことに、今回はCookieContainerProperties.Settings.Default.cookies
オブジェクトを返します... Cookie はありません。
私のアプリケーション設定は、初回実行時にのみ開かれるログインフォームにのみ保存されるため、その理由はわかりません。このような奇妙なことをしている cookiecontainers を経験した人はいますか? おそらく私のコードで何かをチェックする必要がありますか? 乾杯。