2

シンプルな 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 を経験した人はいますか? おそらく私のコードで何かをチェックする必要がありますか? 乾杯。

4

0 に答える 0