configSections的目的是什么?

时间:2010-01-15 16:53:13

标签: .net web-config configsection

我做了一些研究并遇到了这个问题:http://msdn.microsoft.com/en-us/library/ms228245.aspx

因此,如果我理解正确,那么最终我们正在做的是在项目中使用一些.dll,就像:

<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

我猜测不同之处在于,如果你使用configSections方式,你可以通过在webconfig(或其他配置)中稍后创建'name'作为xml元素来设置一些参数。这是正确的,还是我错过了什么?

另外,我注意到我可以从网站的web.config中删除configSections,它运行正常,特别是以下configSections:

<configSections>
    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
        <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
            <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
            <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
                <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
                <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
                <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
            </sectionGroup>
        </sectionGroup>
    </sectionGroup>
</configSections>

我正在阅读某个地方,你可以这样做并让它仍然运行,因为configSections也是默认在machine.config中定义的。那么为什么要在网站的web.config中再次定义呢?我假设用一些自定义设置覆盖machine.config?有什么方法可以确定machine.config文件的默认内容是什么?

3 个答案:

答案 0 :(得分:1)

你是对的。 ASP.NET配置节在machine.config中定义。它是一个层次结构,每个配置文件都会覆盖其父级。您可以在以下目录中找到machine.config和root web.config文件。

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG

答案 1 :(得分:0)

您可以再次定义它以更改网站的行为。

假设您正在运行多个不同的网站,并且希望为特定部分配置不同的网站。这就是它们存在于web.config中的原因。

答案 2 :(得分:0)

所有.NET Framework应用程序都从名为systemroot \ Microsoft .NET \ Framework \ versionNumber \ CONFIG \ Machine.config的文件继承基本配置设置和默认值。 Machine.config文件用于服务器范围的配置设置。其中一些设置无法在层次结构中较低的配置文件中覆盖。

.NET客户端应用程序(控制台和Windows应用程序)使用名为ApplicationName.config的配置文件来覆盖继承的设置。 ASP.NET应用程序使用名为Web.config的配置文件来覆盖继承的设置。

ASP.NET配置层次结构的根是一个称为根Web.config文件的文件,它与Machine.config文件位于同一目录中。根Web.config文件继承Machine.config文件中的所有设置。根Web.config文件包含适用于运行特定版本.NET Framework的所有ASP.NET应用程序的设置。由于每个ASP.NET应用程序都从根Web.config文件继承默认配置设置,因此您只需为覆盖默认设置的设置创建Web.config文件。

请参阅ASP.NET Configuration File Hierarchy and Inheritance