从 asp.net c# 应用程序调用 Sav32Cli.exe “代码 2 - 如果发现阻止进一步执行的错误”

Posted

技术标签:

【中文标题】从 asp.net c# 应用程序调用 Sav32Cli.exe “代码 2 - 如果发现阻止进一步执行的错误”【英文标题】:Calling Sav32Cli.exe from asp.net c# application "Code 2 - If some error preventing further execution is discover " 【发布时间】:2016-12-16 13:02:17 【问题描述】:

我已将 Sav32Cli.exe 集成到我的 asp.net c# 应用程序中,并且它在我的本地机器上运行良好,但是当我们将它移到测试服务器上时,我收到以下错误“代码 2 - 如果出现阻止进一步执行的错误是发现“

场景是如果只有 1 人执行它工作正常的活动,但并发连接执行相同的活动,那么对于某些连接我会收到此错误。

实际情况:我们有用户上传 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();

【问题讨论】:

你应该联系sophos。 【参考方案1】:

您是否考虑过为此使用 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

问候。

【讨论】:

【参考方案2】:

Sav32Cli.exe 需要更多权限才能在 Web 应用程序中执行。所以模仿技术帮助我解决了这个问题。

这个链接帮助我解决了这个问题:Click Here

【讨论】:

以上是关于从 asp.net c# 应用程序调用 Sav32Cli.exe “代码 2 - 如果发现阻止进一步执行的错误”的主要内容,如果未能解决你的问题,请参考以下文章

如何从asp.net中的js函数调用c#函数?

如何在 C# Asp.Net 中从相当复杂的 Json 响应中创建 Dto

需要帮助 - 从 WebMethod (ASP.NET) C# 调用时,MasterPage 始终返回 null

从页面后面的代码显示时,JQuery 对话框上的按钮焦点不起作用 - asp.net / c#

在 ASP.NET 和 C# 中手动进行 AJAX 调用

将数据传递到处理程序的 Jquery ajax 不起作用(Asp.net、C#、Jquery)