网络浏览器控件无法创建cookie?
我有一个Web应用程序(SnapshotServer),它使用WebBrowser控件拍摄网页的快照图像。
我使用SnapshotServer中的WebBrowser控件导航到安全Web应用程序(ImageHost)的入口页面,然后将我重定向到我所需的页面。 ImageHost应用程序受使用Cookie的FormsAuthentication保护。我导航的入口页面负责将我登录 - 这将创建一个Auth cookie。
一旦从ImageHost生成响应,我将WebBrowser控件中的结果转换为图像。
问题:
当我在我的电脑上运行SnapshotServer(Windows 7的IE8),使用IIS7,并导航到ImageHost我的开发服务器(Windows 2008 R2,IE8)上,作为需要的结果 - 我登录到ImageHost并重定向到我想要的图像。 当我在任何Windows 2008 R2服务器上使用IIS7运行SnapshotServer,并导航到我的开发服务器上的ImageHost(Windows 2008 R2,IE8)时,结果并非如所需 - ImageHost无法登录 - 所以我的映像是登录页面。它未能登录的原因是它没有创建一个Auth cookie。
所以我想知道是否有人能告诉我为什么WebBrowser控件在从Windows 2008服务器运行时无法创建Cookie。
首先它与你的Windows版本或你的IIS版本,甚至你的IE版本无关。
这可能与您的IE在Windows 2008上的一些安全问题有关。检查Internet选项并启用cookie(如果它被禁用,我认为它不是)。
你也可以强迫你的浏览器控件使用cookie的容器是这样的:
public partial class WebBrowserControl : Form
{
private String url;
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
public WebBrowserControl(String path)
{
this.url = path;
InitializeComponent();
// set cookie
InternetSetCookie(url, "JSESSIONID", Globals.ThisDocument.sessionID);
// navigate
webBrowser.Navigate(url);
}
}
这些应该解决您的问题
是否有可能在Web浏览器控件中创建呢? – Euclid 2010-12-10 13:34:46
是的,上面的代码只是为了这个目的:) – EBAG 2010-12-10 14:13:44
我得到这个错误当前上下文中不存在Globals。 – 2011-06-17 02:48:20