2016-05-08 25 views
18

AspNet Mvc Core RC1 Webサイトでプロダクションサーバ(Windows Server 2012)を実行しています。AspNetコアでメモリリポジトリを使用して、IISで実行中のデータ保護

私は、ログに次のように見ている:

Neither user profile nor HKLM registry available. Using an ephemeral key repository. Protected data will be unavailable when application exits. 

DataProtectionのソースコードを検査した後、私は次のメソッド呼び出しに問題を追跡:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) 

これはおそらく戻っています何らかの理由でサーバ上でnullが発生する。私はその場所に特別なカスタム設定を持っていないし、docsを読んだので、デフォルトが動作すると思った。

問題はIIS Webサイトが特定のユーザーのコンテキストで実行されていないと考えられますが、これを確認または修正する方法はわかりません。私のウェブサイトは独自のプールで構成されています。

脇に:キーを格納するメモリリポジトリを実行した結果、アプリケーションが非常に煩わしく、本番環境での使用を目的としないアプリケーションを終了するたびにリサイクルされます。

+0

アプリケーションIDがユーザープロファイルを読み込むように設定されていますか? – TGlatzer

+0

@TGlatzer私はそれが問題だと思う(コンテナに関するものに加えて)。私はサーバーにアクセスできるときにそれを行方不明にしようとします。 – mrahhal

答えて

11

ユーザープロファイルはIIS構成で読み込む必要があります。

IISを開き、[アプリケーションプール]、[詳細設定]を右クリックします。そして、 "Load user profile"をtrueに設定します。アプリを再起動すると完全に動作するはずです。

+0

私のIIS上では、それは私にこのエラーを修正しないtrueに既に設定されていました... –

+0

しかし... whyy ???それは今起こり始めただけですか?何か変わった?わかりません。 – ppumkin

3

ASP.NETアプリケーションで使用されるデータ保護キーは、アプリケーション外部のレジストリハイブに格納されます。 AppPool IDとしてアプリケーションを実行する場合、のレジストリハイブを作成する必要があります。は、ASP.NET Coreアプリケーションで使用されます。

スタンドアロンIISインストールの場合は、ASP.NETコアアプリケーションで使用する各アプリケーションプールにData Protection PowerShell scriptを使用できます。キーはレジストリに保持されます。

Data Protectionが検索するレジストリー・ハイブが存在しないため、ログに明記されているように、鍵はディスクに永続化されません。代わりに、それらは一過性になり、メモリ内でのみ生きるでしょう。

Webファームシナリオでは、UNCパスを使用してデータ保護キーリングを格納するようにアプリケーションを構成できます。デフォルトでは、データ保護キーは暗号化されていません。各マシンにx509証明書を展開して、キーリングを暗号化することができます。

は、より多くの情報

+0

これは正解です。基本的に、セッション間で再アクセスできるように、キーを保存する場所をIISに伝える必要があります。 似たような質問にもお答えしますhttps://stackoverflow.com/questions/46225867/is-it-possible-to-persist-cookies-between-visual-studio-debug-sessions/46657239#46657239 –

0

ためofficial ASP.NET Core docsは要するにthis from the DataProtection Git repository

を見てみましょう参照してください、DataProtectionキーの正しいレジストリ設定を防ぐ修正されない場合がありIISでのバグがあります。 powershell scriptが正しくレジストリを手動でセットアップして、AspNetコアで動作するようにします。 AspNetコアアプリケーション用に使用する各アプリケーションプールのスクリプトを実行すると、それらのアプリケーションは意図したとおりに動作します。

+0

他に何ができますか私がアクセス権が非常に限られているホステッド環境にいる場合。 PowerShellスクリプトを実行することも、アプリケーションプールの設定を変更することもできません。 – kliszaq

+0

あなたは難しい状況にあります...私は、これを行うためのアクセス権を持つ誰かを見つけることが可能かどうかを確認する必要があると思います。通常、いくつかの紙の仕事で正当化されると、サーバー構成を変更するための誰か/プロシージャを見つけることができるはずです。がんばろう! – Yepeekai

関連する問題