У меня есть веб-сайт ASP.NET MVC4, где я пытаюсь выполнить процесс на сервере. Код выглядит следующим образом:
ProcessStartInfo startInfo = new ProcessStartInfo()
{
FileName = ExeLocation,
Arguments = string.Format("\"{0}\"{1}", ScriptLocation, Arguments),
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
WorkingDirectory = AppDir,
CreateNoWindow = true,
UserName = ExeUsername,
Password = ExePassword,
Domain = ExeDomain
};
using (Process process = Process.Start(startInfo))
{
using (StreamReader reader = process.StandardOutput)
{
output = reader.ReadToEnd();
}
using (StreamReader reader = process.StandardError)
{
error = reader.ReadToEnd();
}
process.WaitForExit();
if (process.ExitCode != 0)
{
throw new Exception(string.IsNullOrEmpty(output) ? error : output);
}
}
Это прекрасно работает на моем локальном компьютере в Visual Studio, но при развертывании на моем сервере (W2K12) я получаю следующую ошибку:
Access is denied
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
У меня есть учетная запись, на которую ссылается ExeUsername
в обеих группах Администраторы и IIS_IUSRS на сервере.
Пул приложений работает как другая учетная запись (следовательно, необходимо назначить определенную учетную запись для запуска процесса), которая также является членом группы администраторов и IIS_IUSRS на сервере.
Когда я захожу на сервер и запускаю командную строку как ExeUsername
, я могу выполнить процесс, поэтому проблема должна быть связана с выполнением из IIS.
Что еще может блокировать этот доступ?