2011-05-23 44 views
5

Firefox顯示有3個(未過期)Cookie,我可以在常規ASP.NET aspx.cs代碼後面訪問它們。我也在同一頁面上有一個Silverlight用戶控件,但是當我嘗試訪問同一個cookie時,它無法找到任何控件。 HtmlPage.Document.Cookies計數爲0.HtmlPage.Document.Cookies爲空

我該做什麼錯?

我使用這個代碼:

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"); 
    ..... 
} 

回答

5

如果這些cookies是HttpOnly cookies(即包含HttpOnly標誌創建時),您將無法在客戶端腳本(如javascript和Silverlight)中訪問它們。例如,會話就是這種情況,並在ASP.NET中形成身份驗證Cookie。

+0

任何替代(除了刪除HttpOnly)? – 2011-05-23 23:33:55

2

一個有效的解決方案是讀取一個WCF服務中的cookie(在我的情況RIA服務),並返回到Silverlight應用程序

  1. 添加System.Web參考您的WCF類
  2. var name = HttpContext.Current.Request.Cookies.Get(cookieName);

這也適用於httpOnly,安全和常規cookie。