我正在编写WsCF服务来检索多个客户端的数据。我有一个引用业务经理对象的服务层。本质上在服务调用上,我想检索提供程序类型(我的代码中的自定义枚举)和web.config中的连接字符串。
由于某种原因,代码无法在我的项目web.config中找到设置。我正在收集IIS Express,VS开发Web服务器正在引用machine.config。我该如何覆盖它。这非常令人沮丧。正如您从片段中看到的那样,设置和连接字符串名称存在,但代码从不接受它。
我的代码:
Private Sub GetDBInformation()
Dim config As System.Configuration.Configuration
config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(Nothing)
If (config.AppSettings.Settings.Count > 0) Then
Dim Setting As System.Configuration.KeyValueConfigurationElement
Setting = config.AppSettings.Settings("DB TYPE")
If Not (Setting.Value = Nothing) Then
Select Case Setting.Value
Case "SQL SERVER"
provider = ProviderType.SqlServer
Case Else
provider = ProviderType.OleDb
End Select
End If
End If
If (config.ConnectionStrings.ConnectionStrings.Count > 0) Then
connection = config.ConnectionStrings.ConnectionStrings("UMADB").ConnectionString
End If
End Sub
web.config:
<connectionStrings>
<add name="UMADB"
connectionString="Data Source=***********;Initial Catalog=UMA;UserID=********;Password=***********"
providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="DB TYPE" value="SQL SERVER" />
</appSettings>
答案 0 :(得分:0)
这是访问配置设置的一种非常迂回的方式。我不知道为什么或如何进入machine.config
,但有一种更简单的方法。
不要忘记导入System.Configuration
命名空间。
Dim Setting As String = ConfigurationSettings.AppSettings.Get("DB_TYPE")
If Not String.IsNullOrEmpty(DatabaseSetting) Then
Select Case Setting
Case "SQL SERVER"
provider = ProviderType.SqlServer
Case Else
provider = ProviderType.OleDb
End Select
End If
我不知道你到达machine.config
的方式或原因,但这不应该发生。使用当前方法,尝试在获取配置文件时指定应用程序根目录:
System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~/")