IIS Express引用machine.config与项目web.config

时间:2012-04-28 00:11:24

标签: asp.net web-config

我正在编写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>

1 个答案:

答案 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("~/")