【问题标题】:HtmlPage.Document.Cookies emptyHtmlPage.Document.Cookies 为空
【发布时间】:2011-05-23 21:59:52
【问题描述】:

Firefox 显示有 3 个(未过期)cookie,我可以在后面的常规 ASP.NET aspx.cs 代码中访问它们。我在同一页面上也有一个 Silverlight 用户控件,但是当我尝试访问同一个 cookie 时,它​​找不到任何东西。 HtmlPage.Document.Cookies 计数为 0。

我做错了什么?

我正在使用此代码:

    private string GetCookie(string key)
    {
        string[] cookies = HtmlPage.Document.Cookies.Split(';');

        foreach (string cookie in cookies)
        {
            string[] keyValue = cookie.Split('=');
            if (keyValue.Length == 2)
            {
                if (keyValue[0] == key)
                    return keyValue[1];
            }
        }
        return null;
    }

来自here

我从我的视图模型中调用它:

public AQViewModel()
{
    context = new AQContext();
    string cookie = GetCookie("MyCookie");
    .....
}

【问题讨论】:

    标签: c# silverlight cookies silverlight-4.0


    【解决方案1】:

    如果这些 cookie 是 HttpOnly cookies(即在创建时包含 HttpOnly 标志),您将无法在 javascript 和 Silverlight 等客户端脚本中访问它们。例如,ASP.NET 中的会话和表单身份验证 cookie 就是这种情况。

    【讨论】:

    • 任何替代方案(除了删除 HttpOnly)?
    【解决方案2】:

    一个有效的解决方案是从 WCF 服务(在我的例子中是 RIA 服务)中读取 cookie 并将其返回给 Silverlight 应用程序

    1. 将System.Web 引用添加到您的 wcf 类所在的位置
    2. var name = HttpContext.Current.Request.Cookies.Get(cookieName);

    这也适用于 httpOnly、安全和常规 cookie。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 2012-01-04
      • 2020-08-12
      相关资源
      最近更新 更多