HtmlPage.Window.Navigate работает в режиме отладки, но не при развертывании - PullRequest
0 голосов
/ 04 ноября 2010

Я создаю приложение Silverlight, использующее теги <Button>, и вызываю HtmlPage.Window.Navigate(new Uri("http://www.google.com")); во время события Click.

В отладке это работает нормально. Я могу нажать на кнопку и быть перенаправлен в требуемое место. При публикации этого на сервере запрошенное действие не выполняется.

Я также пробовал другие варианты, такие как вызов JavaScript через HtmlPage.Window.Invoke() или просто простое обновление страницы с помощью HtmlPage.Document.Submit(), но оба они не работают после отправки на сервер.

В этот момент я в тупике. Единственная реальная разница между двумя местоположениями, в которых запускается файл:

  • Приложение Silverlight помещается на страницу MVC вместо автоматически созданной тестовой страницы
  • Он также находится на другом порту сервера - тот, который я выделил для моего тестирования .NET 4. Страница MVC включена: 80, а приложение Silverlight включено: 81

Кажется, что почти каждый раз, когда приложение Silverlight пытается взаимодействовать со страницей MVC на уровне JavaScript, происходит сбой (и, конечно, не выдает видимой ошибки). Причина, по которой я это считаю, заключается в том, что, когда я писал это, я пытался открыть окно сообщения с помощью команды MessageBox.Show() в Silverlight - оно не появилось.

Какие еще идеи я могу попробовать?

1 Ответ

2 голосов
/ 05 ноября 2010

Тот факт, что XAP на порте 81 и ваш JavaScript на порте 80 делают этот междоменный вызов. По умолчанию Silverlight не разрешает междоменное взаимодействие с JavaScript.

Посмотрите на настройки безопасности для такого рода сценариев.

Я думаю, что в вашем случае необходимо включить междоменный доступ к HTML с помощью enableHtmlAccess , например:

<div id="silverlightControlHost">
    <object data="data:application/x-silverlight-2,"
            type="application/x-silverlight-2"
            width="300" height="100">
        <param name="source"
                 value="http://www.northwindtraders.com/MySample.xap"/>
        <param name="enableHtmlAccess" value="true" />
    </object>
</div>
...