2010-09-03 4 views
0

Dans notre application, nous utilisons Silverlight côté client. Il télécharge les données du serveur en utilisant WebClient:Bug avec lecture des données en utilisant WebClient

WebClient wcGetDataFundSet = new WebClient(); 
wcGetDataFundSet.OpenReadCompleted += (s, e2) => 
{ 
    // Do something with the data. 
}; 
wcGetDataFundSet.OpenReadAsync(new Uri(this.uriString)); 

Quand j'ouvre this.uriString dans le navigateur, résultat correct est affiché. Sur la machine d'un autre développeur tout fonctionne très bien. Sur le délégué de la mine ne tire même pas. Essayé en utilisant "http://google.com/index.html" et d'autres URL. Cela a fonctionné, mais e2.Result a lancé une exception de type 'System.Reflection.TargetInvocationException'. Puis j'ai changé le code pour cela et cela a fonctionné:

WebClient wcGetDataFundSet = new WebClient(); 
wcGetDataFundSet.DownloadStringCompleted += (s, e2) => 
{ 
    // Do something with the data. 
}; 
wcGetDataFundSet.DownloadStringAsync(new Uri(this.uriString)); 

Windows XP SP3, Visual Studio 2010 et IE 8 sur chaque machine. Avez-vous des idées où le problème était? Merci d'avance.

+0

Quelle est la InnerException de l'exception TargetInvocationException? – dtb

+0

Btw: N'oubliez pas de disposer du WebClient. – dtb

+0

Peut-être que le WebClient est hors de portée et est collecté avant que le délégué puisse être appelé? – dtb

Répondre

0

je sais que ce fil est très vieux et le problème pourrait être résolu quant à lui, mais je déteste les discussions sans réponse ...

Ma solution a été

DownloadDataAsync

au lieu de openReadAsync. Les événements correspondants sont

DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) 

DownloadDataCompleted(object sender, DownloadDataCompleteEventArgs e) 

Je ne suis arrivé cette exception tout en essayant de convertir le résultat en chaîne en cas d'erreur (oublié return après avoir manipulé e.Error).

Questions connexes