2010-02-04 30 views
16

Tôi học cách làm việc với các built-in cung cấp thông tin về Net, và có những điều sau vấn đề:Override Machine.config bởi web.config

tôi đọc mà Machine.config-cài đặt có thể được ghi đè bởi web.config-settings của ứng dụng .Net. Các cài đặt sau trong machine.config-file có liên quan cho tôi:

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

Các thiết lập này làm việc để thiết lập hồ sơ địa phương. Tuy nhiên, khi tôi sao chép các thiết lập vào web.config của ứng dụng của tôi và thay đổi các thiết lập Machine.config , để họ đừng làm việc nữa, tôi nhận được một cấu hình lỗi. Ví dụ, tôi thay đổi tên của nhà cung cấp trong machine.config thành "Local". Điều này không có vấn đề gì vì cài đặt bị ghi đè. Tuy nhiên, khi chạy các ứng dụng tôi nhận được lỗi:.

"Mục 'AspNetSQLProvider đã được thêm' (bản dịch của tôi)

Trả lời

34

Thêm một yếu tố <clear /> là đứa con đầu lòng của <connectionStrings> Nó sẽ gây ra hệ thống cấu hình để bỏ qua tất cả các chuỗi kết nối được thêm vào trong machine.config và sử dụng những cái mới được cung cấp. bạn cũng có thể sử dụng <remove> yếu tố để loại bỏ một mục cấu hình duy nhất nếu bạn không muốn hiểu rõ ràng toàn bộ điều.

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

các ý tưởng tương tự ap cũng đến các phần <providers>.

+1

Cảm ơn rất nhiều, thực hiện điều đó. – AGuyCalledGerald

+0

Điều này cũng hoạt động trong DbProviderFactories –

+0

Điều này làm tôi giận dữ nhưng dường như nó đã giải quyết được vấn đề. Nghiêm túc MS nghiêm túc ... – Shawn