Scenario:
I have a web application (SnapshotServer) which uses a WebBrowser control to take a snapshot images of a web page.
I use a WebBrowser control within SnapshotServer to navigate to a entry page of a secure web application (ImageHost) and then redirects me to my required page. The ImageHost application is protected by FormsAuthentication, which uses cookies. The entry page I navigate to takes care of logging me in - which will create an Auth cookie.
Once a response is generated from the ImageHost, I convert the resul开发者_开发技巧t within the WebBrowser control to an image.
Issue:
When I run SnapshotServer on my PC (Windows 7, IE8), using IIS7, and navigate to ImageHost on my development server (Windows 2008 R2, IE8), the result is as required - I'm logged into ImageHost and redirected to the page I want an image of. When I run SnapshotServer on any Windows 2008 R2 server, using IIS7, and navigate to ImageHost on my development server (Windows 2008 R2, IE8), the result is not as required - ImageHost fails to log in - so my image is of the login page. The reason it fails to log in is that it isn't creating an Auth cookie.
So I'd like to know if anyone can tell me why the WebBrowser control, when run from a Windows 2008 server, cannot create cookies.
First of all it has nothing to do with your windows version or your IIS version or even your IE Version.
This might be related to some security issue on your IE on windows 2008. Check internet options and enable cookies (If it's disabled which i think it's not).
Also you can force your WebBrowser control to use cookie container like this:
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);
}
}
These should solve your problem
精彩评论