HtmlPage.Window.Navigate可在调试中工作,但在部署时无法工作

问题描述 投票:0回答:1

我正在创建一个使用<Button>标签的Silverlight应用程序,并调用HtmlPage.Window.Navigate(new Uri("http://www.google.com"));Click事件中。

在调试中,这可以正常工作。 我可以单击按钮并重定向到请求的位置。 将此发布到服务器时,请求的操作无法执行。

我还尝试了其他变体,例如通过HtmlPage.Window.Invoke()调用JavaScript或者只是通过使用HtmlPage.Document.Submit()简单刷新页面,但是一旦推送到服务器就失败了。

在这一点上,我很困惑。 文件运行的两个位置之间的唯一实际区别是:

  • Silverlight应用程序包含在MVC页面中,而不是自动生成的测试页面
  • 它还位于服务器的其他端口上-我为.NET 4测试预留了一个端口。 MVC页面打开:80,Silverlight应用程序打开:81

几乎看起来Silverlight应用程序尝试在JavaScript级别上与MVC页面交互时,它就会失败(当然,不会引发任何可见错误)。 我之所以认为这是因为,当我写这篇文章时,我试图通过Silverlight中的MessageBox.Show()命令弹出一个消息框 - 它没有出现。

我可以尝试其他任何想法吗?

javascript asp.net-mvc silverlight-4.0 iis-6 c#-4.0
1个回答
2
投票

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>
© www.soinside.com 2019 - 2024. All rights reserved.