私はレガシーアプリケーションをmvcに変換することを任されています。このアプリはpgp.exeを使用してユーザー入力に署名し、電子メールで送信します。このアプリケーションはローカルとテストサーバーで動作しますが、ライブサーバーでは実行されません。私は、アプリケーションプール内の指定されたユーザーを実行してユーザーのプロファイルにキーを設定できるようにしていましたが、機能しました。MVCアプリケーションからPgp.exeを使用する
何らかの理由で、Windows 2003 IIS 6のライブサーバーで、テストサーバーと同じですが、失敗します。問題はpgp.exeだけですが、署名してファイルを作成するように見えますが、コンソールから取得したメッセージは出力されます。 "署名の誤り"?アプリケーションプールユーザーとしてログインしたシェルウィンドウにコマンドを入力すると、(いくつかのアクセス許可を使って戦っても)問題はなくなりますが、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);
}
誰かがこれまでに同様のことをして助けてくれると願っています。私はそれがキーの場所やファイルの場所をどこかに拾われていないと思っているが、他に何をしようとしているかわからない?