使用来自 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。
我有一个 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。