通过web.config覆盖machine.config

AGu*_*ald 17 asp.net web-config

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

我读到可以通过.Net-Application的web.config-settings覆盖machine.config-settings.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>
Run Code Online (Sandbox Code Playgroud)

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

"条目"AspNetSQLProvider已经添加"(我的翻译)

Meh*_*ari 34

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

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

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