【问题标题】:HtmlPage.Window.Navigate works in debug, but not when deployedHtmlPage.Window.Navigate 在调试中有效,但在部署时无效
【发布时间】:2010-11-04 20:53:17
【问题描述】:

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

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

我也尝试过其他变体,例如通过 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】:

    XAP 在端口 81 上,而您的 JavaScript 在端口 80 上,这使得这是一个跨域调用。默认情况下,Silverlight 不允许跨域 JavaScript 交互。

    查看security settings 了解这种情况。

    我认为在您的情况下,有必要使用 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>
    

    【讨论】:

    • 你是对的,我不敢相信我什至没有考虑到这一点。我刚刚做了你建议的改变,它解决了问题。谢谢!
    猜你喜欢
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多