Я хочу загрузить файл с помощью http post. Следующий метод работает хорошо, но с файлами> 1GB я получаю OutOfMemoryExceptions
OutOfMemoryException при загрузке файла с помощью System.Net.WebClient
Я нашел solutions основанный на AllowWriteStreamBuffering
и System.Net.WebRequest
, но это не похоже, помогает быть в этом случае, потому что мне нужно решить эту проблему с System.Net.WebClient
.
Использование памяти моего приложения, когда исключение всегда о ~ 500MB
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);
}
}
}
}
Что мне нужно изменить, чтобы избежать этой ошибки?
Рассматривали ли вы с помощью [WebClient.UploadFileAsync] (https://msdn.microsoft.com/en-us /library/ms144232(v=vs.110).aspx)? –
Вопросы, подобные этим, должны документировать установленный продукт для защиты от вредоносных программ. И показать трассировку стека с включенной неуправляемой отладкой. –