使用来自 MVC 5 控制器的参数执行控制台应用程序

Execute Console Application with parameters from MVC 5 Controller

我有一个 MVC 5 控制器和一个像这样执行的 C# 控制台应用程序:

lp c:\excel.xls /xls

我使用表单上传 XLS 文件后需要执行此行:

    [HttpPost, ValidateAntiForgeryToken]
    public virtual JsonResult UploadXLS(HttpPostedFileBase XLSFile)
    {
        var uploadDir = Server.MapPath("~/App_Data/");

        if (XLSFile != null)
        {
            var originalFileExtension = Path.GetExtension(XLSFile.FileName);
            var fileName = Guid.NewGuid().ToString() + originalFileExtension;
            var filePath = Path.Combine(uploadDir, fileName);

            XLSFilePartners.SaveAs(filePath);

            // EXECUTE THE CONSOLE PROJECT HERE

            return Json("Uploaded!", "text/html");
        }

        return Json("No File!", "text/html");
    }

要运行一个程序,可以使用Process.Start。您需要提供可执行文件的路径和参数:

Process.Start("lp.exe", "c:\excel.xls /xls");

如果您的命令行参数包含空格(如文件路径),您需要将它们用引号引起来(并转义它们,因为它是一个字符串)。像这样:

"\"c:\path with spaces\excel.xls\" /xls"

请注意,这只会启动进程 - 它不会等到完成。如果您需要,请查看 Process.WaitForExit.

有关详细信息,请查看 MSDN page