我的任务是将遗留应用程序转换为 mvc。该应用程序使用 pgp.exe 对用户输入进行 pgp 签名并将其作为电子邮件发送。该应用程序在本地和测试服务器上运行,但不会在实时服务器上运行。我不得不跳过诸如在应用程序池中运行指定用户这样的障碍,以便我们可以在用户配置文件中设置密钥但它起作用了。
由于某种原因,在 Windows 2003 IIS 6 的实时服务器上,它与测试服务器相同,它失败了。问题是 pgp.exe 似乎不会签署和创建文件,我从控制台输出的消息是。“签名错误”??当我将命令放入以应用程序池用户身份登录的 shell 窗口中时,它运行没有问题(在与某些权限进行斗争之后),但是当通过 mvc 应用程序/IIS 服务器运行时,它会失败。用于调用该过程的代码如下。
var startInfo = new ProcessStartInfo();
startInfo.FileName = _pgpexeLocation;
//startInfo.FileName = "pgp.exe";
startInfo.Arguments = string.Format("-sta \"{0}\" -u keyuser-z keypass +COMPATIBLE +FORCE", _tempFilePath);
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.LoadUserProfile = true;
using (Process exeProcess = Process.Start(startInfo))
{
// TODO: set limit to wait for and deal with exit
exeProcess.WaitForExit();
//var stringItem = exeProcess.StandardOutput.ReadToEnd();
//Logger.Info(stringItem);
}
我在这里抓着稻草,希望有人以前做过类似的事情并且可以提供帮助。我猜它的关键位置或文件位置没有在某处被拾取但不确定还有什么可以尝试的?