Autofacをコンテナとして使用しているときに、暗号化アプリケーションブロックを新たに試しています。RijndaelManaged、EnterpriseライブラリとAutofacの併用
結果として、ナゲットパッケージEntLibContrib 5.0 - Autofac Configuratorを使用しています。
DPAPI Symmetric Crypto Providerを使用すると、データを暗号化/復号化できました。
はしかし、RijndaelManagedで、私はしてActivationExceptionを受け取る:
Microsoft.Practices.ServiceLocation.ActivationException:タイプISymmetricCryptoProvider、キー "RijndaelManaged" ---> Autofacのインスタンスを取得しようとしたときに、ライセンス認証エラーが発生しました。 Core.Registration.ComponentNotRegisteredException:要求されたサービス 'RijndaelManaged(Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.ISymmetricCryptoProvider)'が登録されていません。この例外を回避するには、サービスを提供するコンポーネントを登録するか、IsRegistered()を使用してサービス登録を確認するか、ResolveOptional()メソッドを使用してオプションの依存関係を解決します。
手順ごとに:http://msdn.microsoft.com/en-us/library/ff664686(v=pandp.50).aspx 私はMyServiceにCryptographyManagerを注入しようとしています。
私のブートストラップコードは次のようになります。
var builder = new ContainerBuilder();
builder.RegisterEnterpriseLibrary();
builder.RegisterType<MyService>().As<IMyService>();
_container = builder.Build();
var autofacLocator = new AutofacServiceLocator(_container);
EnterpriseLibraryContainer.Current = autofacLocator;
のApp.configがsymmetricCryptoProviders用に定義され、この情報を持っています
name: RijndaelManaged
type: Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.HashAlgorithmProvider, Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
algorithmType:System.Security.Cryptography.RijndaelManaged
protectedKeyFilename:[path_to_my_key]
protectedKeyProtectionScope: LocalMachine
誰もが技術のこの組み合わせでの経験がありますか?
いくつかのテストの後、私は、ASP.NET MVC3とhttpホスト型WCFサービスとうまく統合する必要があるもの以外のIOCコンテナに優先度がないため、Unityコンテナを使用することができると考えています。
私のブートストラップコードは、より簡単になる:
var container = new UnityContainer() .AddNewExtension<EnterpriseLibraryCoreExtension>(); container.RegisterType<IMyService, MyService>();
フィードバックいただきありがとうございます。私はこれを今後も心に留めておきます。 私はすでにUnityに切り替えていたので、私のニーズにはうまくいくようですが、私はあなたの理論をテストするのに時間を費やしませんでした。 あなたの答えは技術的には答えですので、私はそれをそのようにマークします。 – Ken