Вызов Sav32Cli.exe из приложения asp.net C# "Код 2 - если обнаружена какая-то ошибка, препятствующая дальнейшему выполнению"

Я интегрировал Sav32Cli.exe в мое приложение asp.net C# и он нормально работает на моем локальном компьютере, но когда мы перемещаем его на сервер тестирования, я получаю следующую ошибку "Код 2 - если обнаруживается какая-то ошибка, препятствующая дальнейшему выполнению"

Сценарий: если только один человек выполняет действие, оно работает нормально, но параллельное соединение выполняет то же действие, тогда я получаю эту ошибку для некоторых соединений.

Фактический сценарий: у нас есть страница, на которой пользователи загружают файл PDF, и как только файл загружается на сервер, мы выполняем сканирование через sop-hos, и когда несколько пользователей выполняют одну и ту же операцию, я получаю следующую ошибку: Код 2 - Если обнаружена какая-либо ошибка, препятствующая дальнейшему выполнению. Поэтому я хотел бы узнать от вас, ребята, что я должен сделать, чтобы обойти эту ошибку и успешно внедрить сканирование в мое приложение.

Ниже приведен код, который я написал для интеграции сканирования в мое приложение:

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
try
{
    string filePath = sFileDetails.DirectoryName + "\\" + sFileName;
    startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    startInfo.FileName = "C:\\Program Files (x86)\\Sophos\\Sophos Anti-Virus\\sav32cli.exe";
    startInfo.Arguments = String.Format(@" -ss ""{0}""", filePath); 
    process.StartInfo = startInfo;
    process.StartInfo.Verb = "runas";
    process.StartInfo.RedirectStandardOutput = true;
    process.StartInfo.UseShellExecute = false;
    process.Start();
    string output = process.StandardOutput.ReadToEnd();
    StringBuilder objStrBuilder = new StringBuilder();
    objStrBuilder.AppendLine("Status  " + output.ToString());
    int i = process.ExitCode;
    objStrBuilder.AppendLine("Code " + i.ToString());
    File.WriteAllText(sFileDetails.DirectoryName + "\\" + Convert.ToString(System.Guid.NewGuid()) + ".txt", Convert.ToString(objStrBuilder));
    if (i > 0)
    {
        return false;
    }
    return true;
}
catch (Exception ex)
{
    return false;
}
finally
{
    process.Close();
    process.Dispose();
}

2 ответа

Решение

Sav32Cli.exe требует больше разрешений для выполнения в веб-приложении. Таким образом, техника подражания помогла мне решить эту проблему.

Эта ссылка помогла мне решить эту проблему: Нажмите здесь

Рассматривали ли вы использование SAVIDI для этого - https://www.sophos.com/medialibrary/PDFs/partners/sophossavdidsna.ashx

SAV32CLI займет много времени, чтобы загрузить все данные вируса в память, я ожидаю около 5 секунд. Это хорошо, когда вы сканируете жесткий диск, но для каждого файла это будет довольно медленно. Если вы запускаете несколько экземпляров, это также может привести к потере памяти.

Если ваша пропускная способность нуждается в улучшении, я бы посоветовал взглянуть на SAVIDI. В этом сценарии есть служба, которая загружает данные вируса один раз при запуске, и затем вы можете попросить его проверить файл / каталог.

Это сообщение и вложение в теме могут помочь вам: https://community.sophos.com/products/endpoint-security-control/f/sophos-endpoint-software/9420/sophos-sav-di-icap-code-sample

С уважением.

Другие вопросы по тегам