【问题标题】:IIS Express references machine.config versus project web.configIIS Express 引用 machine.config 与项目 web.config
【发布时间】:2012-04-28 00:11:24
【问题描述】:

我正在编写一个 WsCF 服务来检索多个客户端的数据。我有一个引用业务管理器对象的服务层。本质上,在服务调用中,我想从 web.config 中检索提供者类型(我的代码中的自定义枚举)和连接字符串。

由于某种原因,代码无法在我的项目 web.config 中找到设置。我正在收集 IIS Express 并且 VS 开发 Web 服务器正在引用 machine.config。我如何覆盖它。这是非常令人沮丧的。正如您从 sn-p 中看到的那样,设置和连接字符串名称存在,但代码永远不会选择它。

我的代码:

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>

【问题讨论】:

    标签: asp.net web-config


    【解决方案1】:

    这是访问配置设置的一种非常迂回的方式。我不知道您为什么或如何到达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("~/")
    

    【讨论】:

      猜你喜欢
      • 2011-06-13
      • 2020-01-14
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-15
      相关资源
      最近更新 更多