0

私は、レガシー アプリケーションを mvc に変換する任務を負っています。アプリは pgp.exe を使用して、ユーザー入力に pgp 署名し、電子メールとして送信しました。アプリケーションはローカルおよびテスト サーバーで動作しますが、ライブ サーバーでは動作しません。ユーザープロファイルでキーを設定できるように、アプリケーションプールで指定されたユーザーを実行するなどのフープをジャンプする必要がありましたが、うまくいきました。

何らかの理由で、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);
        }

誰かが以前に似たようなことをして助けてくれることを願って、私はここでストローを握りしめています. キーの場所またはファイルの場所がどこかで取得されていないと思いますが、他に何を試すべきかわかりませんか?

4

1 に答える 1

0

アプリ プールが特定のユーザーを使用していて、基になるプロセス呼び出しを確認したときにそのユーザーの appdata フォルダーにキーを設定したにもかかわらず、実際には既定のユーザー プロファイルからキーを取得しようとしていたことがわかりました。これが IIS の構成なのかどうかはわかりませんが、代わりにキーと pgp フォルダーをこの appdata に移動するとうまくいきましたか?

于 2011-08-12T15:23:57.353 に答える