在asp.net中执行批处理文件时出现未知错误

本文关键字:未知 错误 批处理文件 asp net 执行 | 更新日期: 2023-09-27 18:22:18

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

protected void Button1_Click(对象发件人,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());
    }
}

在asp.net中执行批处理文件时出现未知错误

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

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

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

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

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

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

希望这至少能有所帮助。