Autofacをコンテナとして使用しながら、暗号化アプリケーションブロックを新たに実験しています。
その結果、私はnugetパッケージEntLibContrib 5.0--AutofacConfiguratorを使用しています。
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).aspxCryptographyManagerをMyServiceに挿入しようとしています。
私のブートストラップコードは次のようになります。
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
このテクノロジーの組み合わせの経験がある人はいますか?
いくつかのテストの後、代わりにUnityコンテナーを使用する可能性があると思います。これは、使用するもの以外にIOCコンテナーを優先しないため、ASP.NETMVC3およびhttpでホストされるWCFサービスとうまく統合する必要があるためです。
その後、私のブートストラップコードはより単純になります。
var container = new UnityContainer()
.AddNewExtension<EnterpriseLibraryCoreExtension>();
container.RegisterType<IMyService, MyService>();