Entwickler-Ecke

WPF / Silverlight - Problem mit dem Webclient in Silverlight


Anti - Sa 07.08.10 23:29
Titel: Problem mit dem Webclient in Silverlight
Hi,
ich habe das Problem, dass der WebClient, den ich in Silverlight erzeuge, irgendwie keine Strings herunterlädt.
Also ich starte den asynchronen Aufruf: "DownloadStringAsync"


C#-Quelltext
1:
2:
3:
4:
  System.Net.WebClient webclient = new System.Net.WebClient();
  webclient.DownloadStringCompleted += new System.Net.DownloadStringCompletedEventHandler(webclient_DownloadStringCompleted);
        webclient.DownloadProgressChanged +=new System.Net.DownloadProgressChangedEventHandler(webclient_DownloadProgressChanged);
        webclient.DownloadStringAsync(new Uri("http://XXXX.XXXX.de"));


jedoch wird weder das Event "DownloadStringCompleted" noch das "DownloadProgressChanged" aufgerufen! Auch kommt keine Fehlermeldung oder sonstiges.
An was könnte das liegen?

MFG
Anti


Kha - Sa 07.08.10 23:47

Speichere die Instanz lieber in einem Klassenfeld, vielleicht kommt dir der Garbage Collector dazwischen.


Anti - So 08.08.10 01:13

Wow! Danke für die schnelle Antwort!!
Hab jetzt alles in eine Klasse gepackt und siehe da es geht^^ naja so halb^^

jetzt kommt die Fehlermeldung:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
System.Security.SecurityException ---> System.Security.SecurityException: [Arg_SecurityException]
Argumente: 
Debuggingressourcen-Zeichenfolgen sind nicht verfügbar. Oft enthalten der Schlüssel und die Argumente genügend Informationen zur Diagnose des Problems. Weitere Informationen erhalten Sie unter http://go.microsoft.com/fwlink/?linkid=106663&Version=4.0.50524.0&File=mscorlib.dll&Key=Arg_SecurityException
   bei System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   bei System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState)
   bei System.Net.Browser.AsyncHelper.<>c__DisplayClass2.<BeginOnUI>b__0(Object sendState)
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
   bei System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   bei System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
   bei System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)


ich hab dazu jetzt in der msdn folgendes gefunden: http://msdn.microsoft.com/en-us/library/cc645032%28v=VS.95%29.aspx jedoch hab ich nich ganz durchgeblickt^^
so wie ich das jetzt gelesen/verstanden hab muss eine Codedatei oder eine xml datei irgendwo abspeichern die den Zugriff erlaubt.
Nur wo/mit welchem namen muss ich die abspeichern? und muss ich in dieser Datei jede Seite, von der ich etwas runterladen will, extra vermerken?

Danke für die Hilfe

MfG
Anti


Kha - So 08.08.10 11:08

Ich zitiere mal für dich ;) .
Zitat:
The Silverlight runtime first tries to download a Silverlight policy file with a name of "clientaccesspolicy.xml" at the root of the requested target domain using the HTTP protocol.

Die Datei muss also auf dem Ziel-Server liegen, alles andere wäre ja sinnlos.


Anti - So 08.08.10 17:48

ah ok, vielen Dank!
genau das hab ich gesucht^^ es funktioniert jetzt alles.

Hatte anfangs gedacht, die clientaccesspolicy.xml müsste nur auf dem server sein, auf dem die Silverlight-App läuft
(weil ich ja auch so unter Win-Forms, mit dem Webclient, daten von anderen Seiten laden kann ohne das sie eine solche clientaccesspolicy.xml haben),
aber so machts etwas mehr Sinn^^
Den Teil hab ich wohl Anfangs überlesen.

Gruß Anti