我有一个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)
我在服务器上的Administrators和IIS_IUSRS组中都有被引用为
ExeUsername
的帐户。应用程序池正在以不同的帐户运行(因此需要分配特定帐户来运行该进程),该帐户也是服务器上的管理员和IIS_IUSRS的成员。
当我以
ExeUsername
身份登录服务器并运行命令提示符时,我能够执行该进程,因此问题必须与从IIS执行有关。还有什么可能阻止此访问?