2016-03-02 63 views
1

我目前將IConfigFileSettings的具體ConfigFileSettings注入到需要連接字符串名稱的類中。簡化的代碼如下所示:在azure工作者角色中獲取連接字符串名稱

public interface IConfigFileSettings 
{ 
    string GetConnectionString(string name); 
} 

public class ConfigFileSettings : IConfigFileSettings 
{ 
    public string GetConnectionString(string name) 
    { 
     return ConfigurationManager.ConnectionStrings[name].Name; 
    } 
} 

這對在iis,windows服務和控制檯應用程序中託管的webapi非常有用。我猜:

ConfigurationManager.ConnectionStrings[name].Name 

在工作角色中不起作用。我是否可以調整GetConnectionString方法以使其在所有環境中透明地工作?此外,即使我(從.cscfg文件例如)獲取連接刺痛名字我的代碼將尋找:

<connectionStrings> ... </connectionStrings> 

我想我不能只是一個條目添加到該文件.cscfg?

回答

1

你可以把它們放在.cscfg文件,如:

<?xml version="1.0"?> 
<ServiceConfiguration serviceName="Web.Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="3" osVersion="*" schemaVersion="2013-03.2.0"> 
    <Role name="Worker"> 
    <Instances count="2" /> 
    <ConfigurationSettings> 
     <Setting name="connectionstringname" value="connectionstringvalue" /> 
    </ConfigurationSettings> 
    </Role> 
</ServiceConfiguration> 

然後你可以通過閱讀:

var connectionstring = RoleEnvironment.GetConfigurationSettingValue("connectionstringname"); 
+0

感謝。儘管如此,我想在所有環境中都能完成這項工作。我認爲可以使用RoleEnvironment來檢測我所處的環境。是否正確? – cs0815

1

This is a small utility for strong typed config in azureCastle Windsor DictionaryAdapter實現。我在我的項目中使用它。用法:

  1. 探索代碼有點明白了吧
  2. 定義你的強類型的配置界面 - 看Configuration.Interfaces組裝
  3. 定義您的工廠/組成根用湛藍的配置提供和使用字典適配器填補了配置的字典 -
  4. 注入你的配置就像MyWorkerService.cs使用Configuration.Interfaces

    ; 使用Persistence.Interfaces; 使用Worker.Services.Interfaces;

    命名空間Worker.Services { 公共類MyWorkerService:IMyWorkerService { 私人只讀IConnectionStrings _connectionStrings; private readonly IAzureServiceConfiguration _azureServiceConfiguration; private readonly IMicrosoftStorageConfig _microsoftStorageConfig; private readonly IPersitenceServiceConfigDependent _persitenceServiceConfigDependent; private readonly IAppConfigSettings _appConfigSettings;

    ​​

    }}

相關問題