Двусторонняя связь между HTML в .Net WebBrowser и приложением WinForms не работает на Windows Server - PullRequest
3 голосов
/ 01 сентября 2011

У меня есть приложение C # WinForms, которое использует WebBrowser для отображения некоторых элементов пользовательского интерфейса (веб-страница встроена). Мне нужно выполнить код C #, когда пользователь нажимает кнопку на веб-странице. Я выполнил действия, описанные в этой статье, и все работало нормально в Windows 7. Однако, когда я запустил приложение в Windows Server 2008, оно не реагировало на нажатие кнопок. Та же самая история произошла на Windows Server 2003. Я считаю, что есть некоторые проблемы с безопасностью, но не могу понять, что это такое.

Вот HTML-код кнопки:

<input type="button" value="Run Foo" class="wizard_button" 
    onclick="window.external.Foo()" />

А вот код C #:

[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[ComVisible(true)]    
public partial class UI : Form
{
    public UI()
    {
        //doing something
        //...
        webBrowser.ObjectForScripting = this;
        webBrowser.ScriptErrorsSuppressed = true;
    }

    public void Foo()
    {
        //Do what needs to be done when the button is clicked
    }
}

1 Ответ

3 голосов
/ 20 сентября 2011

Мне удалось выяснить, что вызвало такое поведение. Все дело в «Конфигурации усиленной безопасности Internet Explorer», которую нужно было отключить. Для этого вам нужно открыть «Диспетчер серверов», найти раздел «Информация о безопасности», нажать ссылку «Настроить IE ESC» и отключить эту функцию. Здесь - статья со скриншотами.

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