[解決済み] IISプールのLoadUserProfileを設定すると、具体的にどのようなことが起こりますか?
質問
次のような問題に直面しました。
次のコードを実行します。
var binaryData = File.ReadAllBytes(pathToPfxFile);
var cert = new X509Certificate2(binaryData, password);
を2つのプロセスで実行します。プロセスのうちの1つは
LOCAL_SYSTEM
で、このコードは成功します。もう1つは、ローカルグループに属するローカルユーザーアカウントでIIS内部で実行され、そこで次の例外が発生します。
System.Security.Cryptography.CryptographicException
Object was not found.
at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
at System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromBlob(Byte[] rawData, IntPtr password, UInt32 dwFlags, Boolean persistKeySet, SafeCertContextHandle& pCertCtx)
at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, String password)
//my code here
で、ちょっとググってみたら
この答え
という質問と同じようなものです。私は
LoadUserProfile
をアプリケーションプールで使用すると、正常に動作するようになりました。
問題なのは、私が
LoadUserProfile
そして、それがどのような結果をもたらすのか。つまり、もしそれが良いことであるなら、なぜデフォルトでオンになっていないのか、そしてなぜそれがあるのか、ということです。
を設定すると、具体的にどうなるのでしょうか?
LoadUserProfile
また、それがどのような悪影響を及ぼすのでしょうか?
解決方法は?
<ブロッククオートつまり、もしそれが良いことであるなら、なぜデフォルトでオンになっていないのですか?
IIS 6ではユーザープロファイルを読み込んだことはありません。動作の一貫性を保つためにデフォルトではオフになっており、管理者がオプトインする必要があるのだと思われます。
アプリケーションプールのLoadUserProfileを有効にしてみたところ、動作するようになりました。
これは、Windows Cryptographic Service Provider がユーザー ストアに証明書のキーを保存またはロードしようとして、プロファイルが利用できないため
暗号化コンテキスト
は利用できませんでした。なお
Load User Profile
の設定は、ユーザーアカウントにのみ適用されます。NETWORK SERVICEやApplicationPoolIdentityのようなサービスアカウントは、特別な取り扱いがあります。
IISプールでLoadUserProfileを設定すると、具体的に何が起こるのか?
さて、ユーザープロファイルが読み込まれます。これには、彼らの暗号ストア、%TEMP%などの環境変数、およびその他のものが含まれます。
最終的に煮詰まるのは
LoadUserProfile
は、AppPoolの起動時にIISから呼び出される。
どのような悪影響があるのでしょうか?
ユーザープロファイルを読み込まないIIS 6上で動作していたアプリとの後方互換性が壊れる可能性があります。環境変数は読み込まれます。たとえば、Load User Profile が true の場合、%TEMP% 環境変数が
C:\Users\AccountName\AppData\Local\Temp
(など)。falseのときは
C:\WINDOWS\Temp
.
関連
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み】URLから画像をダウンロードする方法
-
VSでscanfエラーを恒久的に解決するには、ソースファイルを作成し、自動的に#define _CRT_SECURE_NO_WARNINGS 1を追加してください。