通过web.config覆盖machine.config

时间:2010-02-04 16:20:15

标签: asp.net web-config

我学习使用.Net的内置配置文件提供程序,并具有以下功能 问题:

我读过web.config-settings可以覆盖machine.config-settings .Net-应用程序。 machine.config文件中的以下设置是相关的 对我来说:

<connectionStrings>
<add name="LocalSqlServer" connectionString="Data Source=(local);Initial Catalog=aspnetdb;
Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>

<profile><providers><add name="AspNetSqlProfileProvider"connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/></providers></profile>

这些设置可用于设置本地配置文件。 但是,当我将设置复制到我的应用程序的web.config并更改 machine.config设置,以便它们不再工作,我得到一个配置 错误。 例如,我将machine.config中提供程序的名称更改为“Local”。 这应该没问题,因为覆盖了设置。但是,在跑步时 应用程序我收到错误:

“条目”已添加AspNetSQLProvider“(我的翻译)

1 个答案:

答案 0 :(得分:34)

添加<clear />元素作为<connectionStrings>的第一个子元素。这将导致配置系统忽略machine.config中添加的所有连接字符串并使用提供的新连接字符串。如果您不想清除整个内容,也可以使用<remove>元素删除单个配置项。

<connectionStrings>
   <clear />
   <add name="LocalSqlServer" connectionString="Data Source=(local);Initial Catalog=aspnetdb;Integrated Security=True" providerName="System.Data.SqlClient"/> 
</connectionStrings>

同样的想法也适用于<providers>部分。