Câu hỏi cũ ở đây nhưng tôi mới bắt gặp và muốn chia sẻ thêm một số thông tin chi tiết.
Đầu tiên, giải pháp đơn giản nhất nếu bạn cần thực hiện <clear/>
trong khối connectionStrings của bạn là thêm một mục nhập OraAspNetConString kết nối trống vào lại web.config của bạn:
<connectionStrings>
<clear />
<add name="OraAspNetConString" connectionString=" "/>
</connectionStrings>
Điều gì sẽ xảy ra khi bạn cài đặt gói Oracle .NET trên bất kỳ máy nào của bạn là nó cài đặt rất nhiều nhà cung cấp khác nhau vào machine.config của bạn cùng với OraAspNetConString dưới dạng Chuỗi kết nối cấp máy. <clear/>
phần tử loại bỏ OraAspNetConString đó và nhờ bổ sung machine.config của Oracle, tất cả các nhà cung cấp Oracle khác được tải theo mặc định đều gặp sự cố khi họ không thể tìm thấy chuỗi kết nối.
Câu trả lời khác ở đây mà bạn đã khám phá bằng cách sử dụng phần tử dành cho nhà cung cấp thành viên không hoạt động vì hầu hết các nhà cung cấp oracle khác được thêm vào machine.config vẫn đang tìm kiếm OraAspNetConString đó vì vậy chỉ xóa một nhà cung cấp không giúp bạn.
Đây là tất cả các nhà cung cấp mà họ đã cài đặt vào máy của tôi.config:
<membership><providers>
<add name="OracleMembershipProvider" type="Oracle.Web.Security.OracleMembershipProvider, Oracle.Web, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" applicationName="" />
</providers></membership>
<profile><providers>
<add name="OracleProfileProvider" type="Oracle.Web.Profile.OracleProfileProvider, Oracle.Web, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" applicationName=""/>
</providers></profile>
<roleManager><providers>
<add name="OracleRoleProvider" type="Oracle.Web.Security.OracleRoleProvider, Oracle.Web, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" applicationName=""/>
</providers></roleManager>
<siteMap><providers>
<add name="OracleSiteMapProvider" type="Oracle.Web.SiteMap.OracleSiteMapProvider, Oracle.Web, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" applicationName="" securityTrimmingEnabled="true"/>
</providers></siteMap>
<webParts>
<personalization>
<providers>
<add name="OraclePersonalizationProvider" type="Oracle.Web.Personalization.OraclePersonalizationProvider, Oracle.Web, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" applicationName=""/>
</providers>
</personalization>
</webParts>
<healthMonitoring><providers>
<add name="OracleWebEventProvider" type="Oracle.Web.Management.OracleWebEventProvider, Oracle.Web, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" buffer="true" bufferMode="OracleNotification"/>
</providers></healthMonitoring>
Vì vậy, nếu bạn không muốn thêm OraAspNetConString trống, bạn phải đảm bảo rằng bạn <clear/>
mọi nhà cung cấp Oracle sau đây hoặc truy cập và thêm <remove name=x />
phần tử cho mỗi lớp nhà cung cấp như sau:
<membership><providers>
<remove name="OracleMembershipProvider" />
</providers></membership>
<profile><providers>
<remove name="OracleProfileProvider" />
</providers></profile>
<roleManager><providers>
<remove name="OracleRoleProvider" />
</providers></roleManager>
<siteMap><providers>
<remove name="OracleSiteMapProvider" />
</providers></siteMap>
<healthMonitoring><providers>
<remove name="OracleWebEventProvider" />
</providers></healthMonitoring>
Tôi chưa bao giờ xử lý bất kỳ bản đồ site hoặc mã Theo dõi sức khỏe nào trong ứng dụng web của mình nhưng tôi vẫn phải thêm các <remove/>
này theo cách thủ công các phần tử cho các nhà cung cấp khác nhau trong web.config của tôi hoặc một cái gì đó sẽ gặp sự cố khi tìm kiếm chuỗi kết nối OraAspNetConString không có ở đó.