我有一个ASP.NET Web应用程序,它在执行某个操作时存储了一个HTTP cookie(例如,单击了一个链接)。现在,我正在创建一个独立的C#应用程序,它需要查看cookies文件夹并识别我的Web应用程序何时创建了cookie条目并读取cookie的内容。
有人可以指导我如何在C#中执行此操作或显示示例代码吗?
答案 0 :(得分:5)
你应该可以PInvoke InternetGetCookie
。
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
protected static extern bool InternetGetCookie(
string url,
string name,
StringBuilder cookieData,
ref int length);
如果您使用的是Rest Starter Kit,则可以调用InternetGetCookie
,如下所示。
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);
}
答案 1 :(得分:5)
我不禁想到这只是错误的做法......并且重新安全滥用。有没有更好的方法可以做到这一点?也许在WebBrowser
控件中使用ObjectForScripting
对象(您的设计)来托管页面,以便您可以通过javascript与C#应用程序通信?
答案 2 :(得分:0)
您可以执行的另一项操作可能会导致通过单击链接调用本地应用程序。你需要register an application to a URL protocol as seen here。 Here is a tutorial and sample app you can look at。
这样做有其自身的一系列安全隐患。但是,它是一种从网页调用应用程序的简单方法,它允许您通过命令行参数传递数据。