0

我正在爲我們的webhook發件人服務之一使用天藍色的表格存儲。注入Webhooks的天藍色表格存儲連接字符串

爲此,必須在web.config文件中設置MS_AzureStoreConnectionString。

現在我需要從關鍵金庫獲取上述值,只能通過自定義實現完成。

我刪除了我的web.config中的「MS_AzureStoreConnectionString」鍵。

而我已經嘗試在我的啓動類中將Azure表存儲連接字符串注入到默認Web鉤子實現中,如下所示。

SettingsDictionary settings = new SettingsDictionary(); 

string connectionString = helper.getTableSrorageConnectionString(); 

ConnectionSettings connection = new ConnectionSettings("MS_AzureStoreConnectionString", connectionString); 

settings.Connections.Add("MS_AzureStoreConnectionString", connection); 

但我在運行我的APP時遇到了以下問題。

請在'Web.Config'文件的配置字符串部分提供一個名爲'MS_AzureStoreConnectionString'的Microsoft Azure存儲連接字符串。

我不想在web.config/app設置中保存連接字符串。

如何注入連接字符串到默認的Web鉤子實現?

請提出可能的解決方案。

回答

0

根據你的描述,如果你想在代碼中設置連接字符串。我建議你可以在WebApiConfig類中創建你自己的InitializeCustomWebHooksAzureStorage方法。

在InitializeCustomWebHooksAzureStorage獲得SettingsDictionary後,可以將連接字符串添加到SettingsDictionary中。

更多細節,你可以參考下面的代碼:

public static class WebApiConfig 
    { 
     public static void Register(HttpConfiguration config) 
     { 
      // Web API configuration and services 

      // Web API routes 
      config.MapHttpAttributeRoutes(); 

      config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{id}", 
       defaults: new { id = RouteParameter.Optional } 
      ); 
      config.InitializeCustomWebHooks(); 
      // Change the method 
      config.InitializeCustomWebHooksAzureStorage2(); 
      config.InitializeCustomWebHooksApis(); 
      config.InitializeReceiveCustomWebHooks(); 
     } 

     public static void InitializeCustomWebHooksAzureStorage2(this HttpConfiguration config) 
     { 
      if (config == null) 
      { 
       throw new ArgumentNullException(nameof(config)); 
      } 
      WebHooksConfig.Initialize(config); 
      ILogger logger = config.DependencyResolver.GetLogger(); 
      SettingsDictionary settings = config.DependencyResolver.GetSettings(); 
      settings.Add("MS_AzureStoreConnectionString", "connection string"); 
      IStorageManager storageManager = GetInstance2(logger); 
      IWebHookStore store;   
      store = new AzureWebHookStore(storageManager, settings, logger);   
      CustomServices.SetStore(store); 
     } 


     private static IStorageManager _storageManager; 

     internal static IStorageManager GetInstance2(ILogger logger) 
     { 
      if (_storageManager != null) 
      { 
       return _storageManager; 
      } 

      IStorageManager instance = new StorageManager(logger); 
      Interlocked.CompareExchange(ref _storageManager, instance, null); 
      return _storageManager; 
     } 


    } 
+0

非常感謝。它爲我工作。下面的例子也適用於我.. – sacratees

0

以下代碼段還爲我工作。你有config.InitializeCustomWebHooksAzureStorage()

ConnectionSettings值=新ConnectionSettings( 「MS_AzureStoreConnectionString」, 「的connectionString」)
SettingsDictionary設置= config.DependencyResolver.GetSettings()之前添加以下行; settings.Add(「MS_AzureStoreConnectionString」,value);

相關問題