2015-04-17 4 views
0

у меня есть контроллер MVC 5 и C# консольное приложение выполняется так:Выполнение консольного приложения с параметрами из MVC 5 контроллера

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"); 
    } 
+4

Посмотрите на 'Process.Start'. – vesan

+0

@vesan: Комментарий проголосовали. Сделайте это, пожалуйста, кратким примером. –

ответ

3

Для запуска программы вы можете использовать Process.Start. Вам нужно будет указать путь к исполняемому файлу и параметры:

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

Если ваши аргументы командной строки содержат пробелы (например, путь к файлу), вам нужно будет заключать их в кавычки (и избежать них, так как это строка). Например:

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

Обратите внимание, что это только запустит процесс - оно не дожидается, пока оно не закончится. Если вам это нужно, посмотрите на Process.WaitForExit.

Для получения дополнительной информации см. MSDN page.

+0

Привет, спасибо! Он работает нормально. Не нужно было заботиться о пространствах, я поместил «/ xls» в параметры, и он отлично работает;) – Patrick

Смежные вопросы