我正在尝试在传入请求中在ASP.Net中生成一个新进程。新过程不会执行。它甚至不会在ErrorDataReceived事件中引发错误。但是,与此同时,如果我明确提供凭据,则可以正常工作。我提供的证书与应用程序池中配置的证书相同。
再一次观察,子进程的执行仅在基于控制台的应用程序(即systeminfo等)下才会失败。但是,如果它是WinForm应用程序(即calc.exe),则工作正常。当然,我无法在屏幕上看到计算器,但是可以在ProcessExplorer的w3wp.exe下看到子进程calc.exe。
有效的示例代码-
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();
如果我删除凭据,它将无法正常工作。
那么,为什么如果我们提供与父流程中配置的凭据相同的凭据,那么为什么无法使用父流程的令牌执行流程呢?