如何从web.config中检索自定义设置

时间:2012-11-19 10:53:18

标签: asp.net vb.net visual-studio-2008 web-config

我有一个web.config,其中包含一些自定义设置(不在appsettings中),如下所示:

<ldapSettings>
    <add key="server" value="xxxxxx"/>
    <add key="portNumber" value="28400"/>
    <add key="protocolVersion" value="3"/>
    <add key="secure" value="true"/>
</ldapSettings>

如何为我的代码使用服务器地址?

我试过了

dim pfad As String
pfad = System.Configuration.ConfigurationManager.GetSection("ldapSettings")
Dim blas As String
blas =pfad["server"]

但它不起作用。我错过了什么?

5 个答案:

答案 0 :(得分:1)

您需要转换GetSection("ldapSettings")的返回值,因为它不返回字符串:

Dim ldap As ldapSettings = CType(ConfigurationManager.GetSection("ldapSettings"), ldapSettings)
Dim server As String = ldapSettings.server

答案 1 :(得分:1)

首先,您需要为自定义配置部分定义一个类,以便告诉ASP.NET它具有哪些属性,如下所示:

Public Class ldapSettings
    Inherits ConfigurationSection
    Private Shared LSettings As ldapSettings = TryCast(ConfigurationManager.GetSection("ldapSettings"), ldapSettings)

    Public Shared ReadOnly Property Settings() As ldapSettings
        Get
            Return LSettings
        End Get
    End Property

    <ConfigurationProperty("server")>
    Public Property Server() As String
        Get
            Return Me("server")
        End Get
        Set(value As String)
            Me("server") = value
        End Set
    End Property

    <ConfigurationProperty("portNumber")>
    Public Property PortNumber() As String
        Get
            Return Me("portNumber")
        End Get
        Set(value As String)
            Me("portNumber") = value
        End Set
    End Property

    <ConfigurationProperty("protocolVersion")>
    Public Property ProtocolVersion() As String
        Get
            Return Me("protocolVersion")
        End Get
        Set(value As String)
            Me("protocolVersion") = value
        End Set
    End Property

    <ConfigurationProperty("secure")>
    Public Property Secure() As Boolean
        Get
            Return Me("secure")
        End Get
        Set(value As Boolean)
            Me("secure") = value
        End Set
    End Property
End Class

然后,您需要稍微更改web.config文件。自定义部分的XML布局应该如下所示:

  <configSections>
    <section name="ldapSettings" type="Your_Assembly_Name.ldapSettings"/>
  </configSections>
  <ldapSettings
    server="xxxxxx"
    portNumber="28400"
    protocolVersion="3"
    secure="true"
  />

最后,您可以使用以下行获取设置:

Dim Secure As Boolean = ldapSettings.Settings.Secure

对于VB.NET感到抱歉,如果需要,可以使用此工具进行转换:http://www.developerfusion.com/tools/convert/csharp-to-vb/

信息主要来自这里: http://haacked.com/archive/2007/03/11/custom-configuration-sections-in-3-easy-steps.aspx

答案 2 :(得分:1)

我发现了一个更简单的解决方案

这就是我所做的:

 Private config As NameValueCollection
 config = DirectCast(ConfigurationManager.GetSection("ldapSettings"), NameValueCollection)
        Dim server As String
        server = config.[Get]("server")

答案 3 :(得分:0)

ConfigurationManager.AppSettings("keyname") 

通常适合我

答案 4 :(得分:0)