Je souhaite télécharger un fichier avec http post. La méthode suivante fonctionne très bien, mais avec des fichiers> 1 Go je reçois un OutOfMemoryExceptions
OutOfMemoryException lors du chargement de fichier avec System.Net.WebClient
J'ai trouvé quelques solutions basé sur AllowWriteStreamBuffering
et System.Net.WebRequest
, mais cela ne semble pas aider à être dans ce cas parce que je dois résoudre avec System.Net.WebClient
.
L'utilisation de la mémoire de mon application lorsque l'exception est levée est toujours de ~ 500Mo
string file = @"C:\test.zip";
string url = @"http://foo.bar";
using (System.Net.WebClient client = new System.Net.WebClient())
{
using (System.IO.Stream fileStream = System.IO.File.OpenRead(file))
{
using (System.IO.Stream requestStream = client.OpenWrite(new Uri(url), "POST"))
{
byte[] buffer = new byte[16 * 1024];
int bytesRead;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
requestStream.Write(buffer, 0, bytesRead);
}
}
}
}
Que dois-je changer pour éviter cette erreur?
Avez-vous pensé à utiliser [WebClient.UploadFileAsync] (https://msdn.microsoft.com/en-us /library/ms144232(v=vs.110).aspx)? –
Des questions comme celles-ci doivent documenter le produit anti-programme malveillant installé. Et afficher une trace de pile avec le débogage non géré activé. –