繁体   English   中英

将上传的文件作为参数传递给asp.net C#中的.bat文件

[英]Pass uploaded file as argument to .bat file in asp.net c#

我需要在网站上运行.bat文件,以扫描文件并向用户生成结果。

以下是完成任务所需的步骤:1.用户将使用FileUpload工具上载.zip文件。 2.上载的文件将作为.bat文件参数之一传递,以便对其进行扫描。 3. .bat文件将扫描.zip文件,然后生成输出(新文件将添加到共享文件夹中)。

通过将文件上传到共享位置,我能够完成第1步。 然后,我将新上载的文件的路径传递到.bat文件,但未显示任何结果。

我检查了服务器上的权限,并授予网站所需的访问权限。 另外,我在服务器上安装了最新的Java版本,但是没有运气。

该代码在我的本地计算机上可以正常工作,但是每当我将其上传到服务器时,它都无法正常工作。

string scanFile = @"\\...path..";
string outputLocation = @"\\...path..";
string args = "--project" +name.Text+ "--scan" +scanFile+ "--out" +outputLocation;

//The method that start the process and run .bat file
protected void startP (string path, string args)
{
    Process p = new Process();
    p.StartInfo.FileName = path;
    p.StartInfo.Arguments= args;
    p.StartInfo.UseShellExecute= false;
    p.StartInfo.CreateNoWindow= true;
    p.StartInfo.EnableRaisingEvents= true;
    p.Start();
    p.WaiteForExit();

    if(p.HasExited)
    {
        p.Close();
        // then calling other methods
    }
}

您能帮我找出问题所在吗? 特别是在我的本地计算机上运行相同的完全相同的代码并提供所需的输出,但是当我通过服务器运行它时却没有!

注意:* .bat文件已上传到服务器上

核心问题是我们通常不授予Web服务器为此所需的权利。 Web服务器始终处于打开状态,因此容易受到24/7黑客攻击。 结果,它们通常在单独的用户下运行,该用户仅具有对服务器Programm和网页内容目录的读取权限-一点也不多。

执行权和写权? 人们会挠头为什么你甚至会要求这样做,然后适当地远离程序。 如果您授予网络服务器“写”权,您最终将被黑客添加一个脚本,该脚本将通过google到达您网页的所有人重定向到色情网页(现实生活中的示例)。

同样重要的是,这应该在2019年不再需要。.NET在版本4.5中被赋予了ZipArchive类 而.NET核心-后来的发展-从1.0开始就拥有它。 如果您某种程度上缺少它,那么您的情况中确实有些奇怪。 因此,无论如何,您都不需要命令行工具来进行解压缩。

提供文件以供下载的部分通常是通过将文件存储在DB中/中进行的 然后在请求时使用HTTP处理程序将其数据分发出去。 同样,您可以避免任何写权限需求(或至少将写内容保留在DB Server中)。

为什么不尝试在以管理员身份而不是.bat文件运行的Windows Shell脚本中尝试执行此操作?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM