.Net WebBrowser, Popup повторно требует входа в систему на некоторых компьютерах - PullRequest
1 голос
/ 20 декабря 2011

Проблема:

Я использую элемент управления .NET WebBrowser.Я разочарован, потому что на некоторые шт всплывающие окна теряют cookie сессии.После многих исследований я думаю, что это (почти наверняка), потому что:

"Когда вы нажимаете гиперссылку в приложении, в котором размещен элемент управления WebBrowser, в Internet Explorer открывается новая страница. В этом сценарии, файл cookie сеанса потерян, и вам, возможно, придется снова войти в систему. Это происходит потому, что Internet Explorer - это процесс, отличный от процесса приложения. Файл cookie сеанса не может быть разделен между процессами. "

Вопрос

Я очень доволен использованием процесса IE, я просто не хочу, чтобы пользователю постоянно приходилось входить в систему.Итак, почему это происходит только на некоторых ПК?Как лучше всего справиться с этими проблемами?Если бы я мог перехватить URL-адрес до запуска процесса IE, я мог бы повторно войти в систему

Попытки решения на данный момент:

В результате я попытался попробовать решение, упомянутое здесь: System.Windows.Forms.WebBrowser открывает ссылки в том же окне или новом окне с тем же сеансом

private SHDocVw.WebBrowser_V1 Web_V1; //Interface to expose ActiveX methods

private void Form1_Load(object sender, EventArgs e)
{
    //Setup Web_V1 interface and register event handler
    Web_V1 = (SHDocVw.WebBrowser_V1)this.webBrowser1.ActiveXInstance;
    Web_V1.NewWindow += new SHDocVw.DWebBrowserEvents_NewWindowEventHandler(Web_V1_NewWindow);
}

private void Web_V1_NewWindow(string URL, int Flags, string TargetFrameName, ref object PostData,string Headers, ref bool Processed)
{
    Processed = true; //Stop event from being processed
    Form1 Popup = new Form1();
    Popup.webBrowser1.Navigate(URL);
    Popup.Show();
}

Что поставило меня перед несколькими новыми проблемами:

  1. У меня ошибка сценария "Невозможно получить значение свойства 'focus': объект имеет значение null или не определено.
  2. То есть настройки безопасности вызывают следующее диалоговое окно" просматриваемая веб-страница пытается закрыть окно,Хотите ... "когда в JS достигается .close().

Чтобы решить эти проблемы, я попытался NewWindow2 событие: stackoverflow.com/a/6473442/17034, предложенное Гансом Пассантом.Это решило две вышеупомянутые проблемы, однако window.close () больше не закрывал веб-представление / форму.

Какой здесь лучший подход?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...