由于不值得进入的原因,我在web.config中冒充管理员用户,如下所示。
<identity impersonate="true" userName="DOMAIN\USERNAME" password="PASSWORD" />
我很清楚这里的安全含义,在解决这个问题之后我会继续讨论。
这是我的控制器动作:
var phantomExePath = ConfigurationManager.AppSettings["PhantomExePath"];
var phantomJsDirectory = ConfigurationManager.AppSettings["PhantomJsDirectory"];
var filePath= phantomJsDirectory + "test.js";
var arguements = filePath;
var startInfo = new ProcessStartInfo
{
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
FileName = phantomExePath,
Arguments = arguements
};
Process p = new Process();
p.StartInfo = startInfo;
p.Start();
var output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
p.Close();
ViewBag.Test = output;
return View();
这是我的观点:
@ViewBag.Test
这是我的phantomJs文件:
system = require('system');
system.stdout.write('asdf');
phantom.exit();
如果我在web.config中注释掉模拟行,我让网站作为AppPool运行,它运行正常,我在屏幕上显示“asdf”。但是如果我在web.config中保留模拟,我就没有输出。在任务管理器中查看进程时,我会简要地看到PhantomJs.exe出现。
我已经为管理员用户提供了PhantomJs.exe和test.js的完全安全权限。
为什么冒充管理员用户的想法会阻止这种工作?