2012-04-28 79 views
2

我正在编写WsCF服务以检索多个客户端的数据。我有一个引用业务管理器对象的服务层。实质上,在服务调用中,我想检索提供程序类型(我的代码中的自定义枚举)以及web.config中的连接字符串。IIS Express引用machine.config与项目web.config

出于某种原因,代码无法找到我的项目web.config中的设置。我正在收集IIS Express,VS开发Web服务器正在引用machine.config。我如何覆盖这个。这是非常令人沮丧的。正如你可以从片段中看到的设置AND连接字符串名称存在,但代码从来没有拿起它。

我的代码:

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

这是访问的配置设置的一个非常迂回的方式。我不知道你为什么或如何进入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("~/") 
相关问题