【问题标题】:Unknown error while Executing Batch File in asp.net [closed]在asp.net中执行批处理文件时出现未知错误[关闭]
【发布时间】:2013-07-13 12:26:52
【问题描述】:

我想在asp.net的服务器端运行一个批处理文件,我使用下面的命令来执行这个批处理文件。它在调试模式下运行时工作正常,但是当我托管 URL 并调用批处理文件时,它不起作用。

protected void Button1_Click(object sender, EventArgs e) {

    try
    {


        if (FileUpload1.FileName == "")
        {
            Label1.Visible = true;
            Label1.Text = "Browse Respective text file";



            return;
        }

        if ((File.Exists(Server.MapPath("~/DND_BASE/" + FileUpload1.FileName))) == true)
        {
            Label1.Visible = true;
            Label1.Text = "File Name already Uploaded";
            return;
        }
        else
        {
            string DestFilepath = @"D:\124_SMS_DATA\124_SMS_Base\"+FileUpload1.FileName;
            string SrcFilepath = Server.MapPath("~/DND_BASE/") + FileUpload1.FileName;


            FileUpload1.SaveAs(System.IO.Path.Combine(Server.MapPath("~/DND_BASE/"), FileUpload1.FileName));
            if (File.Exists(DestFilepath))
            {
                File.Delete(DestFilepath);

            }
            File.Move(SrcFilepath, DestFilepath);
            Label5.Visible = true;
            Label5.Text = "File Uploaded Successfully You can download file after 5 Mins";
            string path = Server.MapPath(".") + "\\test.bat";
            System.Diagnostics.Process.Start(path);





        }

    }
    catch(Exception ex)
    {
        err = new ErrorHandler();
        err.WriteToErrorLog(ex.Message.ToString());
    }
}

【问题讨论】:

  • 我已经输入了您的命令,我可以确认。这里也不行

标签: c# asp.net batch-file


【解决方案1】:

您不应该在 ASP 中运行批处理文件,因为当它在服务器上时,它是在 ASP 用户的权限下运行的(由于 obiouse 的原因非常有限)。

您最好的选择是在 asp 服务器上创建一个定期运行的计划作业,并检查您的 ASP 页面创建或更改的文件夹或文件,然后从中触发事件。

【讨论】:

【解决方案2】:

我不完全确定您的目标,但请记住这一点 - batch 将在 本地计算机 上运行。如果您打算远程运行,我会查看 Powershell。您还会遇到几个权限问题。多个批处理请求将需要提升权限。否则,从 C# 执行批处理文件的正确方法如下:

using (Process.Start(@"C:\Batch\File\Location\AndName.bat"))
{
    // Additional Requirements / Manipulation if Required.
}

这样,一旦您的 batch 完成,它实际上会 dispose 资源。另一种选择是尝试使用提升的权限执行批处理。正如我之前所说,您确实应该使用 Powershell,因为它可以访问 Windows 管理界面 (WMI)

此外,如果您确定整个批次,那么您真的希望确保您非常彻底地测试权限。否则你可能会遇到很大的错误——所以要熟悉用户访问控制并确保你的客户端可以调用一个服务来运行那个批处理到您给定的机器。请注意,如果您的数据格式不正确,您将暴露潜在的安全问题 - 因为您可能允许某人更改请求以运行恶意提升的脚本。

希望这至少会有所帮助。

【讨论】:

  • 嗨,感谢您的所有 cmets。这是我的完整代码我想要的是我有一个网页,一旦文件上传到服务器上,最终用户可以上传文件,我需要在服务器上运行 ms-access 宏文件最后宏会生成一个文件,然后文件将由用户下载..调用宏我只是在服务器端使用批处理文件
  • 嗨谢谢我已经安排了批处理文件..它现在工作正常..谢谢大家!!!
猜你喜欢
  • 2013-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
相关资源
最近更新 更多