【问题标题】:Pass uploaded file as argument to .bat file in asp.net c#将上传的文件作为参数传递给asp.net c#中的.bat文件
【发布时间】:2019-07-29 16:01:03
【问题描述】:

我需要在我的网站上运行一个 .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文件上传到服务器

【问题讨论】:

  • 难道不能通过p对象直接使用参数运行扫描工具,而不是在其周围包装一个批处理文件吗?
  • 能否请您帮忙写代码?
  • 您可以将.bat 代码添加到您的问题中吗?我问是因为我们可以看到您的扫描仪是如何被调用的并创建一些 C# 启动代码 - 根本不需要创建批处理文件。

标签: c# asp.net batch-file file-upload


【解决方案1】:

核心问题是我们通常不会授予 Web 服务器所需的各种权利。网络服务器始终处于开启状态,因此它们很容易受到 24/7 的黑客攻击。因此,它们通常在一个单独的用户下运行,该用户只对服务器程序和网页内容目录具有读取权限 - 没有更多的权限。

执行和写入权限?人们会挠头,为什么您甚至会要求这样做,然后可能会远离您的程序。如果您授予网络服务器写入权限,最终黑客会添加一个脚本,将通过 google 访问您页面的每个人重定向到色情页面(现实生活中的示例)。

问题还在于,这在 2019 年应该是不必要的。.NET 在版本 4.5 中被赋予了 ZipArchive class。而 .NET 核心——在那之后的方式——从 1.0 开始就有了。如果您不知何故缺少它,那么您的场景中确实有些奇怪。所以解压部分不需要命令行工具。

提供文件供下载的部分通常通过存储它们来完成in/with a DB。然后使用 HTTP 处理程序在请求时分发他们的数据。同样,您可以避免任何对写入权限的需求(或至少保持对数据库服务器的写入)。

【讨论】:

  • .bat 文件不用于解压上传的 .zip 文件。它将扫描上传的文件,并将扫描结果生成为 xml 和 html 文件。我正在使用你所说的数据库,但仍然需要 .bat 文件的结果
  • @Marwa 为什么需要 .bat 文件的结果?它提供了哪些在内存中无法通过 ASP.Net 代码提取的信息?
  • .bat 文件是一个实用程序,用于识别上传的项目依赖项并检查是否存在任何已知的、公开披露的漏洞。然后会在 html 或 xml 文件中生成结果。
【解决方案2】:

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

【讨论】:

  • 您在此处的“答案”会更好,因为在原始问题中添加了评论。您的“答案”相当于一个句子的问题。
猜你喜欢
  • 2011-08-23
  • 2012-12-08
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多