gpt4 book ai didi

c# - ASP.Net 服务器上的进程无法通过 IIS 正确运行

转载 作者:太空狗 更新时间:2023-10-29 20:38:54 26 4
gpt4 key购买 nike

我正在尝试对 ASP.Net 网络应用程序中上传的文件运行防病毒扫描。我们使用的是 Sophos,因此可以访问他们的命令行 API sav32cli。在我使用的代码中:

Process proc = new Process();
proc.StartInfo.FileName = @"C:\Program Files (x86)\Sophos\Sophos Anti-Virus\sav32cli.exe";
proc.StartInfo.Arguments = @"-remove -nc " + SavedFile;
proc.StartInfo.Verb = "runas";
proc.Start();
proc.WaitForExit();
int exitCode = proc.ExitCode;

当单步执行代码时,当附加到开发服务器上的 w3wp 进程时,代码只是从一行跳到下一行,似乎什么也没做。当从开发服务器上的代码运行时,它会按预期扫描文件并在被视为病毒时将其删除。

服务器正在运行 IIS 8.0,应用程序内置在 .Net Framework 4 中。根据这些说明,我更改了机器配置以允许进程以 SYSTEM 帐户运行。 https://support.microsoft.com/en-us/kb/317012#%2Fen-us%2Fkb%2F317012

<processModel  userName="SYSTEM" password="AutoGenerate" />

有什么我想念的吗?这种实现的最佳做法是什么?

编辑:调用时,Process 返回 2 的 ExitCode(错误停止执行),而不是预期的 0(扫描成功,没有病毒)或 3(扫描有效,发现病毒)。

编辑 2:根据下面的评论,我将代码更改为:

Process proc = new Process();
proc.StartInfo.FileName = @"C:\Program Files (x86)\Sophos\Sophos Anti-Virus\sav32cli.exe";
proc.StartInfo.Arguments = @"-remove -nc " + SavedFile;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
StringBuilder output = new StringBuilder();

while (!proc.StandardOutput.EndOfStream)
{
string line = proc.StandardOutput.ReadLine();
output.AppendLine(line);
}
proc.WaitForExit();

int exitCode = proc.ExitCode;
ASPxMemo2.Text = exitCode.ToString() + Environment.NewLine + output.ToString();

output 在 IIS 上运行时始终为空,但在从代码运行时会正确填充。

编辑 3:我们没有查看 StandardOutput,而是查看了 StandardError,它揭示了这个错误:

Error initialising detection engine [0xa0040200] (Possible insufficient user Admin rights.)

目前我们将转向另一种病毒检查方法,但仍然想知道可能的解决方案(如果有人有的话)。

最佳答案

您需要确保在 IIS 中运行您的 .NET 应用程序的应用程序池对您的文件具有执行权限

“C:\Program Files (x86)\Sophos\Sophos Anti-Virus\sav32cli.exe”

例如,您可能还需要将此权限添加到上传要扫描的文件的文件夹位置 (c:\temp)

您可能还需要具有管理员权限才能运行防病毒扫描,因为 IIS8 不以管理员身份运行。当您调试时,visual studio 使用您当前登录的 windows 用户(除非您使用 runas),因此这将解释为什么它在调试时会起作用。

关于c# - ASP.Net 服务器上的进程无法通过 IIS 正确运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33391432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com