2010-07-28 13 views
5

Tengo una aplicación web ASP.NET que almacena una cookie HTTP cuando se ha realizado una determinada acción (por ejemplo, se ha hecho clic en un enlace). Ahora, estoy creando una aplicación C# independiente que necesita ver la carpeta de cookies y reconocer cuando mi aplicación web ha creado una entrada de cookie y leer el contenido de la cookie.Cómo leer las cookies locales

¿Alguien podría por favor guiarme sobre cómo hacer esto en C# o mostrar el código de muestra?

Respuesta

5

Debería poder invocar InternetGetCookie.

[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] 
protected static extern bool InternetGetCookie(
    string url, 
    string name, 
    StringBuilder cookieData, 
    ref int length); 

A continuación, puede llamar InternetGetCookie, como a continuación suponiendo que está utilizando el Rest Starter Kit.

StringBuilder cookieBuffer = new StringBuilder(1024); 
int size = 1024; 
bool bSuccess = InternetGetCookie("domain uri", "cookie_name", cookieBuffer, ref size); 
if (!bSuccess) 
{ 
    Int32 err = Marshal.GetLastWin32Error(); 
    //log err 
} 
if (cookieBuffer != null && (cookieBuffer.Length > 0)) 
{ 
    Microsoft.Http.Headers.Cookie cookie = Microsoft.Http.Headers.Cookie.Parse(cookieBuffer.ToString()); 
    HeaderValues<Microsoft.Http.Headers.Cookie> requestCookies = new HeaderValues<Microsoft.Http.Headers.Cookie>(); 
    requestCookies.Add(cookie); 
} 
5

no puedo evitar pensar que es simplemente la manera incorrecta de hacerlo ... y reaks del abuso de seguridad. ¿No hay mejor manera de que puedas hacer esto? Quizás alojando la página en un control WebBrowser y usando un objeto ObjectForScripting (de su diseño) para que pueda hablar con la aplicación C# desde javascript?

+0

Buen punto. OP, ¿hay alguna razón por la que tenga que almacenar el valor en el cliente? ¿Qué hay de guardar el valor en el servidor y hacer que la aplicación cliente lo despliegue a través de un servicio? Esp si la aplicación del cliente no tiene una necesidad real de control WebBrowser. –

+0

Necesito mi aplicación para realizar una determinada acción cuando se hace clic en un enlace en mi sitio web. Así que pensé que la mejor manera de hacerlo sería que la aplicación observara las cookies y que el sitio web almacenara una cookie cuando se hubiera activado un enlace. ¿Hay una mejor manera? – Glory

Cuestiones relacionadas