Я работаю над надстройкой Outlook VSTO, в которой я использую «System.Windows.Forms.WebBrowser» для отображения функциональности надстройки.
Одним из функциональных требований является подключение к облачным учетным записям (например, OneDrive, Dropbox). Когда пользователь нажимает кнопку (например, «Connect OneDrive»), мы вызываем «window.open» в коде JavaScript (ES6) с помощью oauth-url.
Проблема, с которой я сталкиваюсь, заключается в том, что если пользователь не вводит учетные данные и не закрывает окно, а затем снова пытается подключиться к учетной записи в облаке (нажав «Подключить OneDrive»), я получаю исключение ( Ошибка: не удалось завершить операцию из-за ошибки 8150002e. ).
Я не смог найти информацию о коде ошибки '8150002e' в сети.
Это исключение не всегда присутствует, но встречается примерно в 50% случаев.
Любая помощь будет оценена в этом.
что я пробовал:
изменение параметра windowName каждый раз, когда window.open называется
с глобальной переменной для объекта Object.
Использование параметра _blank для открытия нового окна каждый раз.
Через 5-6 раз ошибка появляется, после 5-6 раз ошибка исчезает и окно аутентификации начинает появляться, как и раньше.
- Открытие простой статической HTML-страницы в window.open, чтобы проверить, связана ли проблема с HTML-страницей. Вышеуказанная проблема все еще присутствует.
- Программный сброс System.Windows.Forms.WebBrowser.
- Удаление куки.
- Вместо вызова window.open из кода JavaScript, мы вызываем код VSTO, чтобы открыть окно браузера, ошибка все еще там.
Редактировать : Создан минимальный жизнеспособный пример на
https://github.com/vinay-x/SampleAddin
Код, связанный с проблемой:
- SDXOLForm1.cs (перемещает браузер к SamplePage.HTML, размещенному на localhost: 8001)
SamplePage.HTML (содержит кнопку, которая вызывает функцию window.open).
Пример приложения имеет форму окна, которая содержит элемент управления webBrowser, который переходит на простую страницу HTML, которая содержит кнопку.