Je travaille avec le System.Net.WebClient
et je tente de télécharger un fichier à l'aide de la méthode UploadFileAsync. J'utilise Visual Studio 2010, et tous mes projets sont configurés pour utiliser le runtime standard .NET 4.0, et non la bibliothèque client.
Vous trouverez ci-dessous une petite partie du code que j'utilise. Environ 90 % du temps, j'obtiens l'erreur suivante :
Impossible de convertir l'objet de type 'System.ComponentModel.AsyncOperation' en type 'UploadBitsState'.
Stack Trace:
at System.Net.WebClient.UploadFileAsyncWriteCallback(Byte[] returnBytes, Exception exception, Object state)
at System.Net.WebClient.UploadFileAsync(Uri address, String method, String fileName, Object userToken)
at FileUpload._StartUpload()
Les serveurs FTP vers lesquels je tente de télécharger sont internes à mon organisation, mais l'un d'entre eux utilise IPSwitches WS-FTP et l'autre un site FTP IIS 6.0. J'ai rencontré le même problème avec les deux serveurs.
J'ai cherché partout d'autres personnes ayant un problème similaire, mais en vain.
La ligne sur laquelle l'exception se produit est la suivante _Client.UploadFileAsync
l'appel de la méthode.
private void _StartUpload()
{
try
{
_Client = new WebClient
{
Credentials = _Credentials
};
_Client.UploadProgressChanged += ProgressChanged;
_Client.UploadFileCompleted += UploadCompleted;
_Client.UploadFileAsync(FileBeingUploaded, "STOR", _LocalFile, null);
}
catch (Exception exception)
{
// Methods calls removed for brevity
}
}
private void UploadCompleted(Object sender, UploadFileCompletedEventArgs e)
{
// Methods calls removed for brevity
}
private void ProgressChanged(object sender, UploadProgressChangedEventArgs e)
{
// Methods calls removed for brevity
}