2010-11-04 57 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