У меня возникла ситуация, когда мне нужно запустить программу .cmd на моем веб-сайте IIS. Это сторонняя программа для проверки и передачи файлов, поэтому я не могу выбрать иное.
Я делаю это, программно запуская программу в новом процессе.
Использование этого подхода с файлом .exe отлично работает. Я получаю стандартный вывод от программы. Но это совсем не тот случай, когда я пытаюсь сделать то же самое с файлом .cmd. Стандартный вывод не получен.
Код отлично работает на моем локальном компьютере, поэтому я полагаю, что проблема заключается в конфигурации IIS. Возможно ограничения пользователя или файла.
Может ли кто-нибудь направить меня в правильном направлении?
РЕДАКТИРОВАТЬ Вот код C #, который я использую.
ProcessStartInfo info = new ProcessStartInfo();
info.WindowStyle = ProcessWindowStyle.Hidden;
info.CreateNoWindow = true;
info.FileName = AppDomain.CurrentDomain.BaseDirectory + @"export\foo.cmd";
//replacing foo.cmd with foo.exe works
info.UseShellExecute = false;
info.RedirectStandardOutput = true;
using (Process process = Process.Start(info))
{
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Response.Write(result);
}
}
Я сам нашел решение. Я опубликовал свои выводы на Переполнение стека.
На самом деле это оказалось проблемой пользователя IIS AppPool, поэтому размещение вопроса здесь не было полностью безнадежным.