Для вашего сценария ... Обычно у меня есть appsetting для любого местоположения загрузки / временного хранения, со значением по умолчанию в ~ / App_Data / Uploads / Оно не должно быть видимым для AV, пока байты не будут сохранены на диске. Если вы действительно хотите активное сканирование, то вы можете захотеть иметь многоэтапную очередь ... (также вы захотите сделать асинхронный запрос в ASP.Net), если вы ждете завершения любого сканирования.
- Вы помещаете элемент в очередь для проверки, скажем, 30 секунд (достаточно времени для AV-сканера)
- Вы сохраняете файл в каталоге загрузки (который проверяется)
- У вас есть другая проверка сервиса для очереди, и отметьте ее как завершенную / обработанную, если она все еще существует в течение 30 секунд
- Ваш пользовательский интерфейс будет проверять очередь каждые 10 секунд, чтобы узнать, сделано ли это, а затем представить ее пользователю.
Я бы посоветовал добавить в белый список ваш путь загрузки с вашим собственным сканером и посмотреть, есть ли API, доступный для запуска сканирования вручную по запросу. Альтернативой может быть использование установки ClamAV / ClamWin в качестве сервисного сканера, вы можете запускать обновления на нем каждый час (я делал это для почтовых систем), и он обычно довольно приличный с сигнатурами файлов, даже в архивных файлах ( если настроено правильно).
Также вы можете использовать 7z.exe (командная строка 7-zip) для распаковки любых архивов. 7-zip может извлекать практически все типы архивов, которые я видел, хотя он поддерживает только несколько целей сжатия для новых архивов.
Надеюсь, это поможет, поскольку я собирался добавить это в качестве комментария к другому сообщению, но оно становилось длиннее.