使用MVC 5 Controller中的参数执行控制台应用程序

时间:2015-04-17 00:24:13

标签: c# asp.net-mvc upload

我有一个MVC 5控制器和一个C#控制台应用程序执行如下:

lp c:\excel.xls /xls

在使用Form:

上传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");
    }

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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

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