2010-12-10 6 views
0

Сценарий:Управление веб-браузером не может создавать файлы cookie?

У меня есть веб-приложение (SnapshotServer), которое использует элемент управления WebBrowser для получения снимков моментальной копии веб-страницы.

Я использую элемент управления WebBrowser в SnapshotServer для перехода на страницу ввода защищенного веб-приложения (ImageHost), а затем перенаправляет меня на нужную страницу. Приложение ImageHost защищено FormsAuthentication, в котором используются файлы cookie. Страница ввода, на которую я перехожу, заботится о том, чтобы войти в систему, - которая создаст файл cookie Auth.

После получения ответа от ImageHost я преобразую результат в элемент управления WebBrowser в изображение.

Издание:

Когда я бегу SnapshotServer на моем компьютере (Windows 7, IE8), используя IIS7 и перейдите к ImageHost на моем сервере разработки (Windows 2008 R2, Internet Explorer 8), то результат, как требуется - I Записан в ImageHost и перенаправлен на страницу, на которой я хочу изображение. Когда я запускаю SnapshotServer на любом сервере Windows 2008 R2, используя IIS7, и перейдите на ImageHost на моем сервере разработки (Windows 2008 R2, IE8), результат не соответствует требованиям - ImageHost не может войти в систему, поэтому мое изображение страница авторизации. Причина, по которой он не регистрируется, заключается в том, что он не создает файл cookie Auth.

Поэтому я хотел бы знать, может ли кто-нибудь сказать мне, почему элемент управления WebBrowser при запуске с сервера Windows 2008 не может создавать файлы cookie.

ответ

3

Прежде всего, это не имеет никакого отношения к вашей версии Windows или вашей версии IIS или даже к вашей версии IE.

Это может быть связано с некоторыми проблемами безопасности в вашем IE на окнах 2008. Проверьте параметры Интернета и включите куки-файлы (если он отключен, и я думаю, что это не так).

Также вы можете заставить ваш обозревательУправление использовать куки контейнер, как это:

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); 
    } 
} 

Они должны решить вашу проблему

+0

Можно ли создать это в элементе управления веб-браузера? – Euclid

+0

да, код выше для этой цели :) – EBAG

+1

Я получаю эту ошибку. Глобалы не существуют в текущем контексте. –

Смежные вопросы