Это код, который я использую, чтобы записать свой файл в папку app_data:
var filename = Server.MapPath("~/App_Data") + "/" thefilename;
var ms = new MemoryStream();
file.InputStream.CopyTo(ms);
file.InputStream.Position = 0;
byte[] contents = ms.ToArray();
var fileStream = new System.IO.FileStream(filename, System.IO.FileMode.Create,
System.IO.FileAccess.ReadWrite);
fileStream.Write(contents, 0, contents.Length);
fileStream.Close();
Это нормально пишет файл. Однако, если на нем есть вирус, Bitdefender не удаляет этот файл, если только я go на IIS и вручную не пытаюсь открыть / переместить файл. Если я это сделаю, то он будет немедленно удален.
Если я скопирую и вставлю тестовый вирусный файл в папку app_data напрямую, то Bitdefender удалит его мгновенно.
Я пытался использовать различные способы прочитать / переместить файл с помощью System.IO.File.Move
/ Open
/ ReadAllLines
. Тем не менее, ничто не вызывает побитового защитника для удаления файла.
Единственное, что я получил, - это создание нового процесса для открытия файла. Однако я не хочу делать это на сервере. Я ищу другое решение. Это код, который я использовал для открытия файла, который заставляет Bitdefender сканировать и удалять зараженный файл:
Process cmd = new Process();
cmd.StartInfo.FileName = filename;
cmd.Start();
Решение с System.IO.File.Open
было бы для меня лучшим в этой ситуации, но я не могу понять, почему это не работает. С другой стороны, способ запустить Bitdefender для мгновенного сканирования файла также будет жизнеспособным решением.