我正在创建一个使用<Button>
标签的Silverlight应用程序,并调用HtmlPage.Window.Navigate(new Uri("http://www.google.com"));
在Click
事件中。
在调试中,这可以正常工作。 我可以单击按钮并重定向到请求的位置。 将此发布到服务器时,请求的操作无法执行。
我还尝试了其他变体,例如通过HtmlPage.Window.Invoke()
调用JavaScript或者只是通过使用HtmlPage.Document.Submit()
简单刷新页面,但是一旦推送到服务器就失败了。
在这一点上,我很困惑。 文件运行的两个位置之间的唯一实际区别是:
几乎看起来Silverlight应用程序尝试在JavaScript级别上与MVC页面交互时,它就会失败(当然,不会引发任何可见错误)。 我之所以认为这是因为,当我写这篇文章时,我试图通过Silverlight中的MessageBox.Show()
命令弹出一个消息框 - 它没有出现。
我可以尝试其他任何想法吗?
XAP在端口81上并且JavaScript在端口80上的事实使它成为跨域调用。 默认情况下,Silverlight不允许跨域JavaScript交互。
看一下这种场景的安全设置 。
我认为,在您的情况下,有必要使用enableHtmlAccess启用跨域HTML访问,如下所示:
<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>