-3

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

受保护的无效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());
    }
}
4

2 回答 2

1

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

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

于 2013-07-12T17:50:50.660 回答
0

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

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

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

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

希望这至少会有所帮助。

于 2013-07-12T18:04:14.660 回答