public static IUnityContainer ConfigureApplicationStorage(this IUnityContainer container, bool useFileCache = true) { container.RegisterType <IKeyManager, XmlKeyManager>(); if (useFileCache) { container .RegisterType <TokenCache, FileCache>(new ContainerControlledLifetimeManager(), new InjectionConstructor(typeof(ILoggerFactory), typeof(IDataProtectionProvider))) .RegisterType <IDataProtectionProvider>(new ContainerControlledLifetimeManager(), new InjectionFactory(c => DataProtectionProvider.Create(c.Resolve <ICodePackageActivationContext>().ApplicationName))); } else { container.RegisterInstance(new TokenCache()); } return(container .AddSingleton <StorageConfiguration>()); }