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

时间:2013-07-12 17:34:53

标签: c# asp.net batch-file

我想在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());
    }
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

这样,一旦批次完成,它就会处理资源。另一种方法是尝试使用提升的权限执行批处理。正如我之前所说,你真的应该使用 Powershell ,因为它可以访问 Windows管理界面(WMI)

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

希望至少有帮助。