/// <summary> /// Configures a Microsoft SQL Server Storage implementation of <see cref="IWebHookStore"/> /// which provides a persistent store for registered WebHooks used by the custom WebHooks module. /// </summary> /// <param name="config">The current <see cref="HttpConfiguration"/>config.</param> /// <param name="encryptData">Indicates whether the data should be encrypted using <see cref="IDataProtector"/> while persisted.</param> public static void InitializeCustomWebHooksSqlStorage(this HttpConfiguration config, bool encryptData) { if (config == null) { throw new ArgumentNullException(nameof(config)); } WebHooksConfig.Initialize(config); ILogger logger = config.DependencyResolver.GetLogger(); SettingsDictionary settings = config.DependencyResolver.GetSettings(); // We explicitly set the DB initializer to null to avoid that an existing DB is initialized wrongly. Database.SetInitializer <WebHookStoreContext>(null); IWebHookStore store; if (encryptData) { IDataProtector protector = DataSecurity.GetDataProtector(); store = new SqlWebHookStore(settings, protector, logger); } else { store = new SqlWebHookStore(settings, logger); } CustomServices.SetStore(store); }
private void Form1_Load(object sender, EventArgs e) { //設定 Logger Logger = new TraceLogger(); //設定 SQL 來存 WebHook 的資料 Store = SqlWebHookStore.CreateStore(Logger); //Sender 使用 DataflowWebHookSender var webhookSender = new DataflowWebHookSender(Logger); Manager = new WebHookManager(Store, webhookSender, Logger); }
/// <summary> /// Configures a Microsoft SQL Server Storage implementation of <see cref="IWebHookStore"/> /// which provides a persistent store for registered WebHooks used by the custom WebHooks module. /// </summary> /// <param name="config">The current <see cref="HttpConfiguration"/>config.</param> public static void InitializeCustomWebHooksSqlStorage(this HttpConfiguration config) { if (config == null) { throw new ArgumentNullException("config"); } WebHooksConfig.Initialize(config); ILogger logger = config.DependencyResolver.GetLogger(); SettingsDictionary settings = config.DependencyResolver.GetSettings(); // We explicitly set the DB initializer to null to avoid that an existing DB is initialized wrongly. Database.SetInitializer <WebHookStoreContext>(null); IDataProtectionProvider provider = GetDataProtectionProvider(); IDataProtector protector = provider.CreateProtector(Purpose); IWebHookStore store = new SqlWebHookStore(settings, protector, logger); CustomServices.SetStore(store); }
public static void RegisterMef() { var container = ConfigureContainer(); // use MEF for providing instances // RegistrationBuilder context = new RegistrationBuilder(); // Install MEF dependency resolver for Web API var dependencyResolver = System.Web.Http.GlobalConfiguration.Configuration.DependencyResolver; System.Web.Http.GlobalConfiguration.Configuration.DependencyResolver = new MefDependencyResolver(container); //IDependencyScope // //https://weblog.west-wind.com/posts/2016/Dec/12/Loading-NET-Assemblies-out-of-Seperate-Folders Database.SetInitializer <WebHookStoreContext>(null); IDataProtector protector = Michal.Balador.Infrastructures.Security.DataSecurity.GetDataProtector(System.Configuration.ConfigurationManager.AppSettings["k"].ToString()); ILogger logger = dependencyResolver.GetLogger(); Microsoft.AspNet.WebHooks.Config.SettingsDictionary settings = dependencyResolver.GetSettings(); string nameOrConnectionString = null; string schemaName = null; string tableName = null; var store = new SqlWebHookStore(settings, protector, logger, nameOrConnectionString, schemaName, tableName); //it's singleton!! container.ComposeExportedValue <IWebHookStore>(store); var behaviors = new BehaviorItems <Behavior>(); behaviors.Add(new ChangeMessageItemBehavior()); behaviors.Add(new PostMessageItemBehavior()); container.ComposeExportedValue(behaviors); //it's singleton!! // var context = new BaladorContext(); // container.ComposeExportedValue<IBaladorContext>(context); // container.ForType(typeof(ApplicationDbContext)) //.Export(builder => builder.AsContractType(typeof(IUnitOfWork))) //.SetCreationPolicy(CreationPolicy.NonShared); }