0

我的任务是将遗留应用程序转换为 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);
        }

我在这里抓着稻草,希望有人以前做过类似的事情并且可以提供帮助。我猜它的关键位置或文件位置没有在某处被拾取但不确定还有什么可以尝试的?

4

1 回答 1

0

事实证明,即使应用程序池正在使用特定用户,并且当我检查底层进程调用时我会在该用户的 appdata 文件夹中设置密钥,但它实际上是在尝试从默认用户配置文件中获取密钥。不确定这是 IIS 配置还是类似的配置,但将密钥和 pgp 文件夹移动到此 appdata 是否有效?

于 2011-08-12T15:23:57.353 回答