请单击以进行评分并提供反馈
全部折叠/全部展开 全部折叠
此页面仅适用于
Microsoft Visual Studio 2008/.NET Framework 3.5

同时提供下列产品的其他版本:
.NET Framework 类库
ConfigurationSection 类

更新:2007 年 11 月

表示配置文件中的节。

命名空间:  System.Configuration
程序集:  System.Configuration(在 System.Configuration.dll 中)

Visual Basic(声明)
Public MustInherit Class ConfigurationSection _
    Inherits ConfigurationElement
Visual Basic (用法)
Dim instance As ConfigurationSection
C#
public abstract class ConfigurationSection : ConfigurationElement
Visual C++
public ref class ConfigurationSection abstract : public ConfigurationElement
J#
public abstract class ConfigurationSection extends ConfigurationElement
JScript
public abstract class ConfigurationSection extends ConfigurationElement

可以使用 ConfigurationSection 类实现自定义的节类型。扩展 ConfigurationSection 类,以提供对自定义配置节的自定义处理和编程访问。

节使用 configSections 元素中的项注册其处理类型。有关示例,请参见示例部分中所示的配置文件节选。

说明:

在早期版本的 .NET Framework 中,配置节处理程序用于通过编程方式对配置设置进行更改。现在,所有的默认配置节都由扩展 ConfigurationSection 类的类来表示。

对实现者的说明:

可以使用编程或声明性(属性化)代码编写模型创建自定义配置节:

  • 编程模型。此模型要求为每个节属性 (Attribute) 创建一个用于获取或设置其值的属性 (Property),并将其添加到基础 ConfigurationElement 基类的内部属性 (Property) 包中。

  • 声明性模型。此模型(也称为属性化模型)相对简单,它允许您使用属性 (Property) 定义一个节属性 (Attribute),并通过属性 (Attribute) 对该节属性进行修饰。这些属性 (Attribute) 将属性 (Property) 类型及其默认值通知给 ASP.NET 配置系统。利用通过反射获取的此信息,ASP.NET 配置系统将创建节属性对象并执行所需的初始化。

Configuration 类允许进行编程访问以编辑配置文件。可以按如下方式访问这些文件以进行读取或写入。

  • 读取。使用 GetSectionGetSectionGroup 读取配置信息。请注意,进行读取操作的用户或进程必须具有以下权限:

    • 在当前配置层次结构级别下对配置文件的读取权限。

    • 对所有父级配置文件进行读取的权限。

    如果应用程序需要以只读方式访问其自身配置,则对于 Web 应用程序,建议使用 GetSection()()() 重载方法;对于客户端应用程序,建议使用 ConfigurationManager..::.GetSection 方法。

    这些方法可提供对当前应用程序的缓存配置值的访问,且其性能要好于 Configuration 类。

    说明:

    如果使用静态 GetSection 方法,其采用了 path 参数,则该 path 参数必须引用正在其中运行该代码的应用程序;否则将忽略该参数并返回当前运行的应用程序的配置信息。

  • 写入。可使用 Save 方法之一写入配置信息。请注意,进行写入操作的用户或进程必须具有以下权限:

    • 在当前配置层次结构级别下对配置文件和目录的写入权限。

    • 对所有配置文件的读取权限。

TopicLocation
如何:使用 ConfigurationSection 创建自定义配置节配置 ASP .NET Web 应用程序
如何:使用 ConfigurationSection 创建自定义配置节在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:使用 IConfigurationSectionHandler 创建自定义配置节配置 ASP .NET Web 应用程序
如何:使用 IConfigurationSectionHandler 创建自定义配置节在 Visual Studio 中生成 ASP .NET Web 应用程序

下面的示例演示如何通过编程方式实现自定义节。

有关演示如何实现和使用通过属性化模型实现的自定义节的完整示例,请参见 ConfigurationElement

Visual Basic
' Define a custom section.
' The CustomSection type allows to define a custom section 
' programmatically.

NotInheritable Public Class CustomSection
   Inherits ConfigurationSection
   ' The collection (property bag) that contains 
   ' the section properties.
   Private Shared _Properties As ConfigurationPropertyCollection

   ' Internal flag to disable 
   ' property setting.
   Private Shared _ReadOnly As Boolean

   ' The FileName property.
    Private Shared _FileName As New ConfigurationProperty( _
    "fileName", GetType(String), _
    "default.txt", _
    ConfigurationPropertyOptions.IsRequired)

   ' The MaxUsers property.
    Private Shared _MaxUsers As New ConfigurationProperty( _
    "maxUsers", GetType(Long), _
    CType(1000, Long), _
    ConfigurationPropertyOptions.None)

   ' The MaxIdleTime property.
    Private Shared _MaxIdleTime As New ConfigurationProperty( _
    "maxIdleTime", GetType(TimeSpan), _
    TimeSpan.FromMinutes(5), _
    ConfigurationPropertyOptions.IsRequired)


   ' CustomSection constructor.
   Public Sub New()
      ' Property initialization
        _Properties = _
        New ConfigurationPropertyCollection()

      _Properties.Add(_FileName)
      _Properties.Add(_MaxUsers)
      _Properties.Add(_MaxIdleTime)
   End Sub 'New


   ' This is a key customization. 
   ' It returns the initialized property bag.
    Protected Overrides ReadOnly Property Properties() _
    As ConfigurationPropertyCollection
        Get
            Return _Properties
        End Get
    End Property



   Private Shadows ReadOnly Property IsReadOnly() As Boolean
      Get
         Return _ReadOnly
      End Get
   End Property


   ' Use this to disable property setting.
   Private Sub ThrowIfReadOnly(propertyName As String)
      If IsReadOnly Then
            Throw New ConfigurationErrorsException( _
            "The property " + propertyName + " is read only.")
      End If
   End Sub 'ThrowIfReadOnly



   ' Customizes the use of CustomSection
    ' by setting _ReadOnly to false.
   ' Remember you must use it along with ThrowIfReadOnly.
   Protected Overrides Function GetRuntimeObject() As Object
      ' To enable property setting just assign true to
      ' the following flag.
      _ReadOnly = True
      Return MyBase.GetRuntimeObject()
   End Function 'GetRuntimeObject


    <StringValidator( _
    InvalidCharacters:=" ~!@#$%^&*()[]{}/;'""|\", _
    MinLength:=1, MaxLength:=60)> _
    Public Property FileName() As String
        Get
            Return CStr(Me("fileName"))
        End Get
        Set(ByVal value As String)
            ' With this you disable the setting.
            ' Remember that the _ReadOnly flag must
            ' be set to true in the GetRuntimeObject.
            ThrowIfReadOnly("FileName")
            Me("fileName") = value
        End Set
    End Property


    <LongValidator( _
    MinValue:=1, MaxValue:=1000000, _
    ExcludeRange:=False)> _
    Public Property MaxUsers() As Long
        Get
            Return Fix(Me("maxUsers"))
        End Get
        Set(ByVal value As Long)
            Me("maxUsers") = Value
        End Set
    End Property


    <TimeSpanValidator( _
    MinValueString:="0:0:30", _
    MaxValueString:="5:00:0", ExcludeRange:=False)> _
    Public Property MaxIdleTime() As TimeSpan
        Get
            Return CType(Me("maxIdleTime"), TimeSpan)
        End Get
        Set(ByVal value As TimeSpan)
            Me("maxIdleTime") = Value
        End Set
    End Property
End Class 'CustomSection 
C#
// Define a custom section.
// The CustomSection type allows to define a custom section 
// programmatically.
public sealed class CustomSection : 
    ConfigurationSection
{
    // The collection (property bag) that contains 
    // the section properties.
    private static ConfigurationPropertyCollection _Properties;

    // Internal flag to disable 
    // property setting.
    private static bool _ReadOnly;

    // The FileName property.
    private static readonly ConfigurationProperty _FileName =
        new ConfigurationProperty("fileName", 
        typeof(string),"default.txt", 
        ConfigurationPropertyOptions.IsRequired);

    // The MaxUsers property.
    private static readonly ConfigurationProperty _MaxUsers =
        new ConfigurationProperty("maxUsers", 
        typeof(long), (long)1000, 
        ConfigurationPropertyOptions.None);

    // The MaxIdleTime property.
    private static readonly ConfigurationProperty _MaxIdleTime =
        new ConfigurationProperty("maxIdleTime", 
        typeof(TimeSpan), TimeSpan.FromMinutes(5), 
        ConfigurationPropertyOptions.IsRequired);

    // CustomSection constructor.
    public CustomSection()
    {
        // Property initialization
        _Properties = 
            new ConfigurationPropertyCollection();

        _Properties.Add(_FileName);
        _Properties.Add(_MaxUsers);
        _Properties.Add(_MaxIdleTime);
   }


    // This is a key customization. 
    // It returns the initialized property bag.
    protected override ConfigurationPropertyCollection Properties
    {
        get
        {
            return _Properties;
        }
    }


    private new bool IsReadOnly
    {
        get
        {
            return _ReadOnly;
        }
    }

    // Use this to disable property setting.
    private void ThrowIfReadOnly(string propertyName)
    {
        if (IsReadOnly)
            throw new ConfigurationErrorsException(
                "The property " + propertyName + " is read only.");
    }


    // Customizes the use of CustomSection
    // by setting _ReadOnly to false.
    // Remember you must use it along with ThrowIfReadOnly.
    protected override object GetRuntimeObject()
    {
        // To enable property setting just assign true to
        // the following flag.
        _ReadOnly = true;
        return base.GetRuntimeObject();
    }


    [StringValidator(InvalidCharacters = " ~!@#$%^&*()[]{}/;'\"|\\",
        MinLength = 1, MaxLength = 60)]
    public string FileName
    {
        get
        {
            return (string)this["fileName"];
        }
        set
        {
            // With this you disable the setting.
            // Remember that the _ReadOnly flag must
            // be set to true in the GetRuntimeObject.
            ThrowIfReadOnly("FileName");
            this["fileName"] = value;
        }
    }

    [LongValidator(MinValue = 1, MaxValue = 1000000,
        ExcludeRange = false)]
    public long MaxUsers
    {
        get
        {
            return (long)this["maxUsers"];
        }
        set
        {
            this["maxUsers"] = value;
        }
    }

    [TimeSpanValidator(MinValueString = "0:0:30",
        MaxValueString = "5:00:0",
        ExcludeRange = false)]
    public TimeSpan MaxIdleTime
    {
        get
        {
            return  (TimeSpan)this["maxIdleTime"];
        }
        set
        {
            this["maxIdleTime"] = value;
        }
    }


}

下面的示例摘自应用于上一示例的配置文件。

<?xml version="1.0" encoding="utf-8"?>

<configuration>

<configSections>

<section name="CustomSection" type="Samples.AspNet. CustomSection, CustomConfigurationSection, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" restartOnExternalChanges="true" />

</configSections>

<CustomSection fileName="default.txt" maxUsers="1000" maxIdleTime="00:15:00" />

</configuration>

System..::.Object
  System.Configuration..::.ConfigurationElement
    System.Configuration..::.ConfigurationSection
      System.Configuration..::.AppSettingsSection
      System.Configuration..::.ClientSettingsSection
      System.Configuration..::.ConnectionStringsSection
      System.Configuration..::.DefaultSection
      System.Configuration..::.IgnoreSection
      System.Configuration..::.ProtectedConfigurationSection
      System.Net.Configuration..::.AuthenticationModulesSection
      System.Net.Configuration..::.ConnectionManagementSection
      System.Net.Configuration..::.DefaultProxySection
      System.Net.Configuration..::.RequestCachingSection
      System.Net.Configuration..::.SettingsSection
      System.Net.Configuration..::.SmtpSection
      System.Net.Configuration..::.WebRequestModulesSection
      System.Runtime.Serialization.Configuration..::.DataContractSerializerSection
      System.ServiceModel.Activation.Configuration..::.DiagnosticSection
      System.ServiceModel.Activation.Configuration..::.NetPipeSection
      System.ServiceModel.Activation.Configuration..::.NetTcpSection
      System.ServiceModel.Configuration..::.BehaviorsSection
      System.ServiceModel.Configuration..::.BindingsSection
      System.ServiceModel.Configuration..::.ClientSection
      System.ServiceModel.Configuration..::.ComContractsSection
      System.ServiceModel.Configuration..::.CommonBehaviorsSection
      System.ServiceModel.Configuration..::.DiagnosticSection
      System.ServiceModel.Configuration..::.ExtensionsSection
      System.ServiceModel.Configuration..::.ServiceHostingEnvironmentSection
      System.ServiceModel.Configuration..::.ServicesSection
      System.Transactions.Configuration..::.DefaultSettingsSection
      System.Transactions.Configuration..::.MachineSettingsSection
      System.Web.Configuration..::.AnonymousIdentificationSection
      System.Web.Configuration..::.AuthenticationSection
      System.Web.Configuration..::.AuthorizationSection
      System.Web.Configuration..::.CacheSection
      System.Web.Configuration..::.ClientTargetSection
      System.Web.Configuration..::.CompilationSection
      System.Web.Configuration..::.CustomErrorsSection
      System.Web.Configuration..::.DeploymentSection
      System.Web.Configuration..::.GlobalizationSection
      System.Web.Configuration..::.HealthMonitoringSection
      System.Web.Configuration..::.HostingEnvironmentSection
      System.Web.Configuration..::.HttpCookiesSection
      System.Web.Configuration..::.HttpHandlersSection
      System.Web.Configuration..::.HttpModulesSection
      System.Web.Configuration..::.HttpRuntimeSection
      System.Web.Configuration..::.IdentitySection
      System.Web.Configuration..::.MachineKeySection
      System.Web.Configuration..::.MembershipSection
      System.Web.Configuration..::.OutputCacheSection
      System.Web.Configuration..::.OutputCacheSettingsSection
      System.Web.Configuration..::.PagesSection
      System.Web.Configuration..::.ProcessModelSection
      System.Web.Configuration..::.ProfileSection
      System.Web.Configuration..::.RoleManagerSection
      System.Web.Configuration..::.ScriptingAuthenticationServiceSection
      System.Web.Configuration..::.ScriptingJsonSerializationSection
      System.Web.Configuration..::.ScriptingProfileServiceSection
      System.Web.Configuration..::.ScriptingRoleServiceSection
      System.Web.Configuration..::.ScriptingScriptResourceHandlerSection
      System.Web.Configuration..::.SecurityPolicySection
      System.Web.Configuration..::.SessionPageStateSection
      System.Web.Configuration..::.SessionStateSection
      System.Web.Configuration..::.SiteMapSection
      System.Web.Configuration..::.SqlCacheDependencySection
      System.Web.Configuration..::.TraceSection
      System.Web.Configuration..::.TrustSection
      System.Web.Configuration..::.UrlMappingsSection
      System.Web.Configuration..::.WebControlsSection
      System.Web.Configuration..::.WebPartsSection
      System.Web.Configuration..::.XhtmlConformanceSection
      System.Web.Mobile..::.DeviceFiltersSection
      System.Web.Services.Configuration..::.WebServicesSection
      System.Web.UI.MobileControls..::.MobileControlsSection
      System.Windows.Forms..::.WindowsFormsSection
      System.Workflow.Activities.Configuration..::.ActiveDirectoryRoleFactoryConfiguration
      System.Workflow.Activities..::.ExternalDataExchangeServiceSection
      System.Workflow.Runtime.Configuration..::.WorkflowRuntimeSection
      System.Xml.Serialization.Configuration..::.DateTimeSerializationSection
      System.Xml.Serialization.Configuration..::.SchemaImporterExtensionsSection
      System.Xml.Serialization.Configuration..::.XmlSerializerSection
此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

.NET Framework

受以下版本支持:3.5、3.0、2.0
社区内容   什么是社区内容?
添加新内容 RSS  批注
Processing
© 2009 Microsoft Corporation 版权所有。 保留所有权利 | 商标 | 隐私权声明
Page view tracker