2012-11-19 46 views
1

检索自定义设置,我在它(而不是在AppSettings的),它看起来像这样一些自定义设置web.config如何从web.config中

<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"] 

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

+0

什么是错误讯息您收到? – Kami

+0

你是否在''中定义了它? – Coder

+0

yes

回答

0
ConfigurationManager.AppSettings("keyname") 

平时对我的作品

+0

它不在appsettings中,它是自定义设置 –

1

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

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

它说该ldapsettings没有定义? –

+0

在顶部使用'Imports System.Configuration'和'Imports System.Web.Configuration'。 – Coder

+0

我导入它们,但仍然是相同的错误 –

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

1

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

这里是我做过什么:

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