情景:
我有一个Web应用程序(SnapshotServer),它使用WebBrowser控件来获取网页的快照图像。
我在SnapshotServer中使用WebBrowser控件导航到安全Web应用程序(ImageHost)的入口页面,然后将我重定向到我所需的页面。 ImageHost应用程序受FormsAuthentication保护,后者使用cookie。我导航到的入口页面负责登录我 - 这将创建一个Auth cookie。
从ImageHost生成响应后,我将WebBrowser控件中的结果转换为图像。
问题:
当我在我的PC上运行SnapshotServer(Windows 7,IE8),使用IIS7,并在我的开发服务器(Windows 2008 R2,IE8)上导航到ImageHost时,结果是必需的 - 我已登录ImageHost并重定向到页面我想要一个图像。 当我在任何Windows 2008 R2服务器上运行SnapshotServer,使用IIS7,并在我的开发服务器(Windows 2008 R2,IE8)上导航到ImageHost时,结果不是必需的 - ImageHost无法登录 - 所以我的图像是登录的页。它无法登录的原因是它没有创建Auth cookie。
所以我想知道是否有人可以告诉我为什么WebBrowser控件在从Windows 2008服务器运行时无法创建cookie。
答案 0 :(得分:3)
首先,它与您的Windows版本或您的IIS版本甚至您的IE版本无关。
这可能与您在Windows 2008上的IE上的某些安全问题有关。检查互联网选项并启用Cookie(如果已禁用,我认为不是)。
此外,您可以强制WebBrowser控件使用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);
}
}
这些可以解决您的问题