2009-07-29 4 views
0

In seiner sehr einfachen Form habe ich eine WebClient-Anfrage für einige XML in einem Page.xaml Code hinter. Etwas wie:Warum funktioniert meine WebClient-Anfrage je nach Hosting-Lösung anders?

public Page() 
    { 
     InitializeComponent(); 

     Uri uri = new Uri("Dummy.xml", UriKind.Relative); 

     WebClient webClient = new WebClient(); 
     webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringCompleted); 
     webClient.DownloadStringAsync(uri); 
    } 

    void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
    { 
     if (e.Error == null) 
     { 
      //Do something 
     } 
    } 

Wenn ich mein Setup Silverlight-Projekt durch eine asp.net gehostete Seite zu laufen, und dann Dummy.xml setzen im ClientBin Ordner (bezogen auf die XAP) es funktioniert gut.

Wenn ich das Projekt nur mit der automatisch generierten Testseite-Option einstelle und die XML-Datei wieder relativ zum xap setze, funktioniert die Anfrage nicht (obwohl das abgeschlossene Ereignis ausgelöst wird).

Meine Frage ist warum? Ist es erforderlich, dass ein Silverlight-Projekt, das dynamisch heruntergeladen wird, auf einem Server sein muss?

Prost J

Antwort

1

Versuchen Sie zunächst, die automatisch generierte Testseite zu vermeiden. Sie müssen verstehen, wie das silverlight-Sicherheitsmodell standardmäßig funktioniert, wenn auf den xap als Datei zugegriffen wird.

Um Ihre Frage zu beantworten, stoßen Sie auf die Sicherheit, die einen unautorisierten domänenübergreifenden Zugriff verhindert.

+0

lol ... nette und klare Fehlermeldung sie werfen dann :). Danke für Ihre Hilfe. Ich frage mich, wie sie das dann für Desktop-Silverlight-Apps handhaben. –

+0

OOB-Apps befinden sich in der Browser-Sandbox für alle Absichten und Zwecke. Wenn der Desktop versucht, einen Webservice aufzurufen, benötigt der Webservice eine Cross-Domain-Richtlinie für die Website, von der aus die silverlight App installiert wurde. –

0

Ja, es gibt keinen Webserver für sie zu verbinden! Die automatisch generierte Testseite öffnet dieses XAP direkt, ohne den Web-Server von Visual Studio aufzurufen. Wenn Sie dies tun möchten, müssen Sie die andere Option verwenden, um eine Website mit dem Silverlight-Projekt zu erstellen. Alternativ können Sie die XML-Datei als Ressource in das XAP einbetten und als Ressource darauf zugreifen.

+0

Dies beantwortet die Frage "warum"? Hat WebClient eine Abhängigkeit, dass es einen Webserver gibt? –