Я пытаюсь создать новый процесс в ASP.Net для входящего запроса. Новый процесс не выполняется. Он даже не выдает ошибку в событии ErrorDataReceived. Тем не менее, в то же время, если я предоставлю учетные данные явно, он работает нормально. Я предоставляю те же учетные данные, которые я настроил в пуле приложений.
Еще одно наблюдение: выполнение дочернего процесса завершается неудачно, только если это приложение на основе консоли, то есть systeminfo и т. Д. Однако, оно работает нормально, если это приложение WinForm, то есть calc.exe. Конечно, я не вижу калькулятор на экране, но я вижу дочерний процесс calc.exe в w3wp.exe в ProcessExplorer.
Рабочий пример кода -
var startInfo = new ProcessStartInfo(cmd)
{
RedirectStandardError = true,
RedirectStandardOutput = true,
UseShellExecute = false,
Arguments = arguments,
Domain = "mydomain",
UserName = "appPoolUser",
};
startInfo.Password = new SecureString();
foreach (char ps in password)
startInfo.Password.AppendChar(ps);
var process = new Process()
{
StartInfo = startInfo,
EnableRaisingEvents = true
};
process.Start();
Если я удалю учетные данные, они не будут работать.
Итак, почему процесс не выполняется с использованием токена родительского процесса, где в то же время он работает нормально, если мы предоставляем те же учетные данные, которые мы настроили в родительском процессе?