2011-10-27 54 views
1

你好我一直拉我的頭髮在這最後幾天的播放mp3,我有一個Silverlight應用程序一個MediaElement的C#編寫的C#的Silverlight的MediaElement不會從網絡

我試着通過HTTP流的MP3並通過Silverlight應用程序播放。雖然它保留醒目,上面寫着

AG_E_NETWORK_ERROR

的mp3音樂不能播放和MediaElement.MediaOpened事件永遠不會觸發

在網上搜索後,出現此錯誤是由於異常一個curropt源,但當我指向一個webbrowser在mp3時,mp3播放正常。

繼承人的代碼

private void button1_Click(object sender, RoutedEventArgs e) 
     { 

      Uri source = new Uri("http://www.sm-testing.co.uk/mixes/youdontknow.mp3"); 
      mediaElement1.Source = source; 
      mediaElement1.MediaFailed += new EventHandler<ExceptionRoutedEventArgs>(mediaElement1_MediaFailed); 
      mediaElement1.MediaOpened +=new RoutedEventHandler(mediaElement1_MediaOpened); 


     } 


     void mediaElement1_MediaFailed(object sender, ExceptionRoutedEventArgs e) 
     { 
      MessageBox.Show(e.ErrorException.ToString()); 
     } 

     private void mediaElement1_MediaOpened(object sender, RoutedEventArgs e) 
     { 

      mediaElement1.Play(); 
     } 
+0

MP3的大小是多少?你確定你正在接收整個流(MP3)格式正確嗎? –

+0

@AllanChua嗨,是的MP3是好的,我剛剛試過它的Windows樣本WMA和我得到同樣的事情,例外是即時和我不能看到應用程序試圖建立一個連接到網站看netstat – stedotmartin

+0

什麼我想問的是,如果玩家的來源完全收到,你是否嘗試使用快速觀看? –

回答

0

我知道你已經在你的例子使用的實際URL。我檢查了您的網站,並且沒有http://www.sm-testing.co.uk/ClientAccessPolicy.xml文件或http://www.sm-testing.co.uk/crossdomain.xml文件。

如果沒有這些文件(preferably ClientAccessPolicy.xml,因爲另一個版本是舊的Flash兼容性格式,並且缺少某些功能),Silverlight將只從其託管域中檢索文件。這是一項安全功能,用於阻止Silverlight應用程序在未經許可的情況下從任意位置獲取數據或圖像。下面

例ClientAccessPolicy.xml允許任何HTTP或HTTPS請求的任何訪問:

<?xml version="1.0" encoding="utf-8"?> 
<access-policy> 
     <cross-domain-access> 
     <policy> 
      <allow-from http-request-headers="*"> 
      <domain uri="http://*" /> 
      <domain uri="https://*" /> 
      </allow-from> 
      <grant-to> 
      <resource path="/" include-subpaths="true"/> 
      </grant-to> 
     </policy> 
     </cross-domain-access> 
</access-policy> 

除非你想打開了進入的Flash應用程式,那麼也不必加入crossdomain.xml,以及: )

+0

嗨,感謝您的幫助,我按照msdn所說的做了兩個文件,但是仍然不能播放,現在是對於2個文件重要的外殼?我已經將它們添加爲小寫字母,因爲msdn有這種方式。 – stedotmartin

+0

@Shutupsquare:您只需要ClientAccessPolicy.xml,但爲什麼只將它配置爲SOAPAction?使它成爲'allow-from http-request-headers =「*」'。看到上面更新的例子。 –

+0

老兄,你工作的一個傳奇,謝謝:) – stedotmartin