2010-02-04 16 views
16

imparo a lavorare con il built-in profilo fornitore di .Net, e hanno i seguenti problema:Override machine.config da web.config

ho letto che Machine.config-impostazioni possono essere sovrascritte da le impostazioni web.config di un'applicazione .Net. Le seguenti impostazioni nel machine.config file sono rilevanti per me:

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

queste impostazioni lavoro per impostare profili locali. Tuttavia, quando copio le impostazioni nel web.config della mia applicazione e cambio le impostazioni di machine.config , in modo che non funzionino più, ottengo un errore di configurazione . Ad esempio, cambio il nome del provider in machine.config in "Local". Questo dovrebbe essere un problema, perché le impostazioni sono sovrascritte. Tuttavia, quando si esegue l'applicazione ottengo l'errore:.

"La voce 'AspNetSQLProvider è già stato aggiunto' (traduzione mia)

risposta

34

Aggiungi un elemento <clear /> come il primo figlio di <connectionStrings> sarà causa della sistema di configurazione per ignorare tutte le stringhe di connessione aggiunte nel machine.config e utilizzare il nuovo quelli forniti. È inoltre possibile utilizzare <remove> elemento per rimuovere un singolo elemento di configurazione se non si vuole cancellare il tutto.

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

il stessa idea ap passa anche alle sezioni <providers>.

+1

Grazie mille, lo fa. – AGuyCalledGerald

+0

Funziona anche in DbProviderFactory –

+0

Questo mi fa arrabbiare ma sembra che risolva il problema. Seriamente MS seriamente ... – Shawn