Properties.Settings.Default CookieContainer重新启动,但为什么?

时间:2015-09-18 16:45:24

标签: c# winforms cookies cookiecontainer

我有一个简单的winform应用程序。在第一次运行时,将运行登录屏幕,以便用户可以登录网站。会话cookie如果成功则会保存:

Properties.Settings.Default["cookies"] = cookies;
Properties.Settings.Default.Save();

完成此操作后,登录表单将被隐藏并运行新的主表单。在此mainform中,将再次读取并保存cookiecontainer:

CookieContainer cookies = Properties.Settings.Default.cookies;

像魅力一样工作。会话cookie仍在那里,一切都很好。之后,使用如下的cookie对网站发出新请求:

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启动。

非常奇怪,这次Properties.Settings.Default.cookies会返回一个CookieContainer对象... 没有Cookie

我不知道为什么,因为我的应用程序设置只保存在登录表单中,该表单仅在首次运行时打开。有没有人有任何使用cookiecontainers做这样奇怪的事情的经验?我是否必须检查代码中的某些内容?欢呼声。

0 个答案:

没有答案