CookieException 在 CookieContainer.Add 期间,部分 Cookie 无效



我有一个需要与服务器通信的Windows Phone 8应用程序。当我调用服务器上的登录服务(位于子目录"/authentication"下)时,服务器会为我的HttpClient的客户端处理程序设置 cookie。然后我把这个Cookie放在IsolatedStorageSettings里。当我关闭并重新打开我的应用程序,从而重新实例化我的HttpClient时,我想从IsolatedStorageSettings获取Cookie并手动将其设置为我的客户端处理程序。但是,我收到一条CookieException消息:"cookie的'域'='mobile.some-domain.com'部分无效。

我为此编写的代码如下:

public static void saveCookies()
{
    IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
    var cookies = handler.CookieContainer.GetCookies(new Uri(ROOT + "/authentication"));
    settings["sessionCookie"] = cookies["JSESSIONID"];
    settings.Save();
}
public static bool checkCookies()
{
    IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
    if (settings.Contains("sessionCookie"))
    {
        Cookie c = settings["sessionCookie"] as Cookie;
        Uri uri = new Uri(ROOT + "/authentication");
        handler.CookieContainer.Add(uri, c);
        return true;
    }
    return false;
}

ROOT 是"https://mobile.some-domain.com/ERSMobileApps/services",处理程序的类型是 HttpClientHandler

我是第一次处理cookie,因此对此的任何帮助/评论将不胜感激。提前谢谢。

文档说:"如果仅为一个特定主机添加 Cookie 实例,请不要设置 Cookie 实例的域属性。这是根据 URI 自动设置的。因此,我将更改checkCookies更改为:

public static bool checkCookies()
{
    IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
    if (settings.Contains("sessionCookie"))
    {
        Cookie c = settings["sessionCookie"] as Cookie;
        Cookie newCookie = new Cookie(c.Name, c.Value, c.Path);
        Uri uri = new Uri(ROOT + "/authentication");
        handler.CookieContainer.Add(uri, newCookie);
        return true;
    }
    return false;
}

到目前为止,我没有任何问题。

最新更新