Проблема:
Я использую элемент управления .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();
}
Что поставило меня перед несколькими новыми проблемами:
- У меня ошибка сценария "Невозможно получить значение свойства 'focus': объект имеет значение null или не определено.
- То есть настройки безопасности вызывают следующее диалоговое окно" просматриваемая веб-страница пытается закрыть окно,Хотите ... "когда в JS достигается
.close()
.
Чтобы решить эти проблемы, я попытался NewWindow2
событие: stackoverflow.com/a/6473442/17034, предложенное Гансом Пассантом.Это решило две вышеупомянутые проблемы, однако window.close () больше не закрывал веб-представление / форму.
Какой здесь лучший подход?