Stare pytanie tutaj, ale właśnie na nie wpadłem i chciałem podzielić się kilkoma szczegółami.
Po pierwsze, najłatwiejsze rozwiązanie, jeśli potrzebujesz wykonać <clear/>
w bloku connectionStrings jest dodanie pustego wpisu ciągu połączeń OraAspNetConString z powrotem do pliku web.config:
<connectionStrings>
<clear />
<add name="OraAspNetConString" connectionString=" "/>
</connectionStrings>
Co się stanie, gdy zainstalować pakiet Oracle .NET na dowolnym komputerze instaluje mnóstwo różnych dostawców w pliku machine.config wraz z OraAspNetConString jako connectionString na poziomie maszyny. <clear/>
element pozbywa się tego OraAspNetConString, a dzięki dodatkom Oracle machine.config wszyscy inni dostawcy Oracle ładowani domyślnie ulegają awarii, gdy nie mogą znaleźć connectionString.
Druga odpowiedź tutaj, w której badałeś użycie elementu dla dostawców członkostwa, nie zadziałała, ponieważ większość innych dostawców Oracle dodanych w pliku machine.config nadal będzie szukać tego OraAspNetConString więc wyczyszczenie tylko jednego dostawcy ci nie pomoże.
To są wszyscy dostawcy, którzy zainstalowali w moim pliku machine.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>
Więc jeśli nie chcesz dodać pustego OraAspNetConString, musisz upewnić się, że albo <clear/>
każdy z następujących dostawców Oracle lub wejdź i dodaj <remove name=x />
element do każdej klasy dostawcy w ten sposób:
<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>
Nigdy nie miałem do czynienia z żadnym kodem siteMap ani Health Monitoring w mojej aplikacji internetowej, ale nadal musiałem ręcznie dodać te <remove/>
elementy dla różnych dostawców w moim pliku web.config lub coś ulegnie awarii podczas szukania ciągu połączenia OraAspNetConString, którego tam nie było.