2010-07-28 26 views
5

Tôi có một ứng dụng web ASP.NET lưu trữ một cookie HTTP khi một hành động nhất định đã được thực hiện (ví dụ: một liên kết đã được nhấp). Bây giờ, tôi đang tạo một ứng dụng C# độc lập cần xem thư mục cookie và nhận ra khi một mục nhập cookie đã được tạo bởi ứng dụng web của tôi và đọc nội dung của cookie.Cách đọc cookie cục bộ

Có ai vui lòng hướng dẫn tôi cách thực hiện điều này trong C# hoặc hiển thị mã mẫu không?

Trả lời

5

Bạn sẽ có thể PInvoke InternetGetCookie.

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

Sau đó, bạn có thể gọi InternetGetCookie như dưới đây giả sử bạn đang sử dụng 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

tôi không thể không nghĩ rằng chỉ đơn giản là một cách sai lầm để làm điều đó ... và nó reaks lạm dụng an ninh. Không có cách nào tốt hơn bạn có thể làm điều này? Có lẽ lưu trữ các trang trong một điều khiển WebBrowser và sử dụng một đối tượng ObjectForScripting (của bạn nghĩ ra) để bạn có thể nói chuyện với các ứng dụng C# từ javascript?

+0

Điểm tốt. OP, có lý do nào khiến bạn phải lưu trữ giá trị trên máy khách không? Điều gì về việc lưu trữ các giá trị trên máy chủ và có ứng dụng khách hàng kéo nó xuống thông qua một dịch vụ? Esp nếu ứng dụng khách không có nhu cầu thực sự cho điều khiển WebBrowser. –

+0

Tôi cần ứng dụng của mình thực hiện một hành động nhất định khi một liên kết đã được nhấp vào trong trang web của tôi. Vì vậy, tôi nghĩ cách tốt nhất để làm điều này là cho ứng dụng xem cookie và cho trang web lưu trữ cookie khi liên kết bị mã hóa. Có cách nào tốt hơn? – Glory

0

Có một thứ khác bạn có thể làm có thể khiến ứng dụng cục bộ của bạn được gọi bằng cách nhấp vào liên kết. Bạn cần phải register an application to a URL protocol as seen here. Here is a tutorial and sample app you can look at.

Việc này có tập hợp các tác động bảo mật riêng. Tuy nhiên, đây là một cách dễ dàng để gọi ứng dụng của bạn từ trang web và nó cho phép bạn chuyển dữ liệu qua các tham số dòng lệnh.

Các vấn đề liên quan