Старый вопрос здесь, но я просто наткнулся на него и хотел поделиться некоторыми подробностями.
Во-первых, самое простое решение, если вам нужно сделать <clear/>
в вашем блоке connectionStrings, это добавить пустую запись строки соединения OraAspNetConString обратно в ваш web.config:
<connectionStrings>
<clear />
<add name="OraAspNetConString" connectionString=" "/>
</connectionStrings>
Что происходит, когда вы устанавливаете пакет Oracle .NET на любом из ваших компьютеров, если он устанавливает тонну различных провайдеров в ваш machine.config вместе с OraAspNetConString в качестве строки соединения на уровне компьютера. Элемент <clear/>
избавляется от этого OraAspNetConString, и благодаря добавлениям Oracle machine.config все другие поставщики Oracle, загруженные по умолчанию, терпят крах, когда они не могут найти connectionString.
Другой ответ здесь, где вы исследовали использование элемента для провайдеров членства, не сработал, потому что большинство других провайдеров оракула, добавленных в machine.config, все еще будут искать этот OraAspNetConString , поэтому очищение только один провайдер тебе не поможет.
Это все провайдеры, которые они установили на мой компьютер.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>
Поэтому, если вы не хотите добавлять пустую строку OraAspNetConString, вам необходимо убедиться, что вы либо <clear/>
каждый из следующих провайдеров Oracle, либо добавили элемент <remove name=x />
в каждый класс провайдера, например: это:
<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>
Я никогда не имел дело с каким-либо кодом siteMap или Health Monitoring в своем веб-приложении, но мне все равно приходилось вручную добавлять эти <remove/>
элементы для разных провайдеров в мой web.config, или что-то могло произойти сбой при поиске строки подключения OraAspNetConString, которая не была не там.