1
有沒有一種方法來動態/以編程方式設置EntLib 5數據庫跟蹤監聽器使用的連接字符串?如何動態/以編程方式設置企業庫數據庫跟蹤監聽器連接字符串
我在Windows Azure中託管我的WCF服務,這意味着一旦部署後我將無法訪問web.config。爲了不需要重新部署我的解決方案,只要我想將數據庫跟蹤監聽器指向不同的數據庫,我一直希望能夠通過我的服務配置文件從該服務配置文件中提取該設置並動態設置它。
有沒有一種方法來動態/以編程方式設置EntLib 5數據庫跟蹤監聽器使用的連接字符串?如何動態/以編程方式設置企業庫數據庫跟蹤監聽器連接字符串
我在Windows Azure中託管我的WCF服務,這意味着一旦部署後我將無法訪問web.config。爲了不需要重新部署我的解決方案,只要我想將數據庫跟蹤監聽器指向不同的數據庫,我一直希望能夠通過我的服務配置文件從該服務配置文件中提取該設置並動態設置它。
是的,你可以使用the fluent configuration描述in this post:
var builder = new ConfigurationSourceBuilder();
builder.ConfigureData()
.ForDatabaseNamed("MyDb")
.ThatIs.ASqlDatabase()
.WithConnectionString(RoleEnvironment.GetConfigurationSettingValue("MyConnectionString"))
.AsDefault();
builder.ConfigureLogging()
.WithOptions
.LogToCategoryNamed("General")
.SendTo
.Database("Formatted Database TraceListener").UseDatabase("MyDb")
...;
var configSource = new DictionaryConfigurationSource();
builder.UpdateConfigurationWithReplace(configSource);
EnterpriseLibraryContainer.Current = EnterpriseLibraryContainer.CreateDefaultContainer(configSource);
如果我有我的所有日志記錄配置的config文件設置的,我只能對剛纔設置的連接字符串,而不必做建設者.ConfigLogging()...步驟? – Filosopher
即使我添加ConfigureLogging()部分,記錄器仍然使用我的服務的web.config中的連接字符串,而不是我在代碼中動態設置的值。 – Filosopher
如果您已有LogWriter的現有實例,則不會更改它。嘗試獲得新的或首先進行容器重新配置。 –