2010-11-04 34 views
0

我创建一个使用<Button>标签Silverlight应用程序,以及Click事件过程中调用HtmlPage.Window.Navigate(new Uri("http://www.google.com"));HtmlPage.Window.Navigate工作在调试,而不是在部署

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

我也尝试过其他变体,例如通过HtmlPage.Window.Invoke()调用JavaScript或仅使用HtmlPage.Document.Submit()对页面进行简单刷新,但是一旦推入服务器后都无法工作。

我很难过这一点。该文件被运行在两个位置之间唯一的区别是:

  • Silverlight应用程序被包裹在一个MVC页面,而不是自动生成的测试页
  • 它也坐在不同的端口的服务器上 - 我为.NET 4测试预留的一个。 MVC的页面是:80,Silverlight应用程序是:81

它几乎好像随时Silverlight应用程序试图与一个JavaScript水平的MVC页面交互,它失败(和,当然,抛出不可见的错误)。我正在考虑这是因为,在我写这篇文章的时候,我试图通过Silverlight中的MessageBox.Show()命令弹出一个消息框 - 它没有出现。

我可以尝试其他想法吗?

回答

2

,在端口81和您的JavaScript是在端口80上XAP使这是一个跨域调用的事实。默认情况下,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> 
+0

你说得对,我不能相信我甚至没有考虑那。我只是做了你所建议的改变,并解决了问题。谢谢! – 2010-11-04 22:18:51

相关问题