2011-05-23 12 views
5

Firefox muestra que hay 3 cookies (no caducadas) y que puedo acceder a ellas en el código ASP.NET aspx.cs que hay detrás. También tengo un control de usuario de Silverlight en la misma página, pero cuando intento acceder a la misma cookie, no puedo encontrar ninguna. HtmlPage.Document.Cookies recuento es 0.HtmlPage.Document.Cookies empty

¿Qué podría estar haciendo mal?

Estoy usando este código:

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; 
    } 

de here

lo estoy llamando desde mi modelo de vista:

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

Respuesta

5

Si esas galletas son HttpOnly cookies (es decir, que contiene el HttpOnly cuando se cree) no podrá acceder a ellos en scripts de cliente como javascript y Silverlight. Por ejemplo, ese es el caso de las cookies de autenticación de sesión y formularios en ASP.NET.

+0

¿Alguna alternativa (además de eliminar HttpOnly)? –

2

Una solución válida es leer la cookie desde el interior de un servicio WCF (en mi caso los servicios RIA) y devolverlo a la aplicación Silverlight

  1. Añadir System.Web referencia al lugar donde sus clases de WCF son
  2. var name = HttpContext.Current.Request.Cookies.Get(cookieName);

esto funcionará para httpOnly, cookies seguras y regulares también.

Cuestiones relacionadas