2010-07-28 38 views
5

Belirli bir eylem gerçekleştirildiğinde bir HTTP çerezi saklayan bir ASP.NET web uygulamasına sahibim (örneğin bir bağlantı tıklatıldı). Şimdi, çerez klasörünü izlemeli ve web uygulamasının bir çerez girdisi oluşturulduğunda ve çerezin içeriğini okuduğunda bunu fark etmesi gereken bağımsız bir C# uygulaması oluşturuyorum.Yerel çerezler nasıl okunur

C# veya örnek kodun nasıl gösterileceği konusunda bana yol gösterebilir misiniz?

cevap

5

PInvoke InternetGetCookie'u kullanabilmeniz gerekir.

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

Ardından Rest Starter Kit kullandığınız varsayarak aşağıda gibi InternetGetCookie çağırabilir.

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

Bunu basitçe bunu yapmak için yanlış bir yoldur düşünmeden edemiyorum ... ve güvenlik kötüye reaks. Bunu yapmanın daha iyi bir yolu yok mu? Belki de sayfayı bir WebBrowser kontrolünde barındırarak ve bir ObjectForScripting nesnesini kullanarak (tasarlamanızın) c javascript'ten C# uygulaması ile konuşabilirsiniz?

+0

İyi nokta. OP, değeri müşteriye saklaman için bir neden var mı? Sunucudaki değerin depolanması ve istemci uygulamasının bir hizmet aracılığıyla aşağı çekilmesi nedir? İstemci uygulamasının WebBrowser denetimi için gerçek bir ihtiyacı yoksa. –

+0

Web sitemde bir bağlantı tıklandığında belirli bir işlemi gerçekleştirmek için uygulamanıza ihtiyacım var. Bu yüzden bunu yapmanın en iyi yolunun, uygulamanın çerezleri izlemesi ve web sitesinin bağlantı oluşturulduğunda bir çerez saklaması için olacağını düşündüm. Daha iyi bir yolu var mı? – Glory