1

証明書ファイルを開こうとしています:

//path to file
static string KKBpfxFile = 
    Path.Combine(HostingEnvironment.ApplicationPhysicalPath,
                 ConfigurationManager.AppSettings["CertFolder"], 
                 "cert.pfx");

_logger.Debug(KKBpfxFile);

X509Certificate2 KKbCert = new X509Certificate2(KKBpfxFile, KKBpfxPass);

しかし、例外ファイルが見つかりません。ログ ファイルには、次のパスが含まれています。

C:\inetpub\wwwroot\msite\Certificates\cert.pfx

このパスをエクスプローラーで開くと、すべて問題ありません。ファイルが存在します。
どこに問題がありますか?

PS。このフォルダーへのすべての (読み取り、書き込み、およびその他の) 許可をALLグループに付与しました。
PS2。これは、本番サーバーでのみ発生する問題です。私のローカルマシンでは動作します。

4

2 に答える 2

1

File.Exists()コンストラクターの呼び出しの前にチェックを入れてみてください。

また、アプリケーション プールを実行しているユーザーによっては、アクセス権に問題がある可能性もありますが、アクセス権を「Everyone」に設定すると機能するはずです。それでも...本番サーバーでそれを再確認してください。

また、さらなるステップとして、ファイルの ACL をチェックして、コンストラクターを呼び出す前に読み取り権限があるかどうかを確認し、さらにファイルをバイト配列にロードし、バイト配列を arg としてコンストラクターを呼び出すことができます。

于 2013-02-01T08:15:49.260 に答える
0

procexp.exe を使用して、exe 内のパスを指定します。どのプログラムがあなたのファイルをロックしたかをお伝えします。プログラムに解放を要求します。本番サーバーであるため、強制終了しないでください。

Procexp は、ローカル マシンにあるか、Microsoft からダウンロードできます。tat exe をプロダクション サーバーにコピーし、そこから実行します。

于 2013-02-01T08:26:39.057 に答える