在CookieContainer.Add期间c# - CookieException,部分cookie无效

hal*_*lei 2 c# cookies dotnet-httpclient

我有一个需要与服务器通话的Windows Phone 8应用程序.HttpClient当我在服务器上调用登录服务(位于子目录"/ authentication"下)时,服务器将cookie设置为我的客户端处理程序.然后我把Cookie它拿出来存放在IsolatedStorageSettings.当我关闭并重新打开我的应用程序,从而重新实例化我的HttpClient,我想获得CookieIsolatedStorageSettings,它手动设置为我的客户端处理程序.但是,我得到一条CookieException消息:"Cookie的'Domain'='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;
}
Run Code Online (Sandbox Code Playgroud)

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

我是第一次处理cookie,所以对此有任何帮助/评论将不胜感激.提前致谢.

hal*_*lei 8

文件说:"如果你只是一个特定的主机添加一个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;
}
Run Code Online (Sandbox Code Playgroud)

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