あなたのシナリオでは...通常、アップロード/一時的な場所のアプリ設定があり、デフォルトは ~/App_Data/Uploads/ の下にあります。バイトがディスクに永続化されるまで、AV には表示されません。本当にアクティブなスキャンが必要な場合は、スキャンが完了するのを待つ場合に、マルチステージ キューが必要になる場合があります (また、ASP.Net で Async 要求を実行することもできます)。
- アイテムをキューにプッシュして、たとえば 30 秒でチェックインします (AV スキャナーには十分な時間です)。
- ファイルをアップロードディレクトリに保存します(チェックされます)
- キューに対して別のサービス チェックを行い、30 秒以内にまだ存在する場合は完了/処理済みとしてマークします。
- UI は 10 秒ごとにキューをチェックして完了したかどうかを確認し、それをユーザーに提示します。
ネイティブ スキャナーでアップロード パスをホワイトリストに登録することを検討し、リクエストに応じて手動スキャンを実行する API が公開されているかどうかを確認します。別の方法としては、ClamAV/ClamWin セットアップをサービス スキャナーとして使用する方法があります。1 時間ごとに更新を実行できます (私はこれをメール システム用に実行しました)。また、アーカイブ ファイルであっても、ファイル署名に関してはかなりまともな傾向があります (適切に構成されている場合)。
また、7z.exe (7-zip コマンド ライン) を使用してアーカイブを抽出することもできます。7-zip は、新しいアーカイブの圧縮ターゲットをいくつかしかサポートしていませんが、私が見たほぼすべてのアーカイブ タイプを抽出できます。
これをコメントとして別の投稿に追加するつもりだったので、これが役立つことを願っていますが、長くなってしまいました。