Autor Beitrag
alegria
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79



BeitragVerfasst: Fr 29.10.10 13:21 
Hey!

Ich bin am verzweifeln weil ich so ein triviales Problem nicht hinbekomme und ich im Netzt keine hilfreichen Lösungen finden kann...

Problem:
In einer Silverlight 4 Anwendung soll ein MP3 von einer Website abgespielt werden.

Code:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
        {
            mediaElement1.Source = new Uri("http://mp3.podcast.hr-online.de/mp3/podcast/derTag/derTag_20101028.mp3", UriKind.Absolute);
            mediaElement1.Play();
        }

        private void mediaElement1_MediaFailed(object sender, ExceptionRoutedEventArgs e)
        {

            MessageBox.Show(e.ErrorException.ToString());
        }


Fehler:
System.Exception: 4001 AG_E_NETWORK_ERROR


Zu dem Fehler findet man zwar einiges, aber alles nicht brauchbar! Was mach ich falsch bzw. wie muss man es richtig machen??? Geht überhaupt MP3 abspielen wenn das FIle nicht lokal liegt?
(also download von dem file und dann mediaElement1.Source = new Uri("derTag_20101028.mp3", UriKind.Relative); funktioniert einwandfrei... Das MP3-Format kann es daher schon mal nciht sein...
alegria Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79



BeitragVerfasst: Sa 30.10.10 07:34 
Ist das Problem tatsächlich so kompliziert??? Kann man denn nicht in irgendeiner Form mit Silverlight MP3 von einem entfernten Rechner abspielen?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 30.10.10 11:44 
Ich würde sagen, Du läufst in dieses Problem hier: www.c-sharp-forum.de...p;highlight=security

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
alegria Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79



BeitragVerfasst: Mo 01.11.10 13:04 
Yo! Das wars... Hatte als Silverlight Newbie davon auch bisher null Ahnung gehabt weshalb ich mal als Art "Tutorial" (für alle anderen die ähnliche Probleme haben (werden)...) hier die Lösung beschreibe. Vielen Dank für die Hilfe!

1) Auf dem Zielwebserver eine clientaccesspolicy.xml erstellen.
(bei mir war das per root (LAMPP) folgende Datei (chmod 644) nach /srv/www/htdocs schreiben...)
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from>      
        <domain uri="*"/>
      </allow-from>      
      <grant-to>      
        <resource path="/" include-subpaths="true"/>
      </grant-to>      
    </policy>
  </cross-domain-access>
</access-policy>


2) C#-Code (Button, Progressbar, Mediaelement)
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
private void btn_play_Click(object sender, RoutedEventArgs e)
{
    WebClient wcl = new WebClient();
    wcl.OpenReadCompleted += new OpenReadCompletedEventHandler(_downloadFertig);
    wcl.DownloadProgressChanged += new DownloadProgressChangedEventHandler(_downloadProgress);
    wcl.OpenReadAsync(new Uri("http://blabla.com/bla/eins zwei.mp3", UriKind.Absolute));
}

private void _downloadProgress(object sender, DownloadProgressChangedEventArgs e)
{
    progressBar1.Value = (double)e.ProgressPercentage;
}

private void _downloadFertig(object sender, OpenReadCompletedEventArgs e) {
    try
    {
        mediaElement1.SetSource(e.Result);
        mediaElement1.Play();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}


3) Freuen! :)