Старый вопрос здесь, но я просто столкнулся с ним и хотел поделиться более подробной информацией.
Во-первых, самое простое решение, если вам нужно сделать в вашем ConnectionStrings в <clear/>
блок должен добавить пустой OraAspNetConString ConnectionString запись обратно в web.config:
<connectionStrings>
<clear />
<add name="OraAspNetConString" connectionString=" "/>
</connectionStrings>
Что происходит, когда вы install the Oracle .NET package на любом из ваши машины устанавливают тонну различных поставщиков в ваш machine.config вместе с OraAspNetConString как машинный уровень connectionString. Элемент <clear/>
избавляется от этой OraAspNetConString и благодаря дополнениям Oracle machine.config все остальные поставщики Oracle, загруженные по умолчанию, сбой, когда они не могут найти connectionString.
Другой ответ здесь, где вы исследовали, используя элемент для членства провайдеров не работают, потому что большинство других провайдеров оракула добавленных в machine.config по-прежнему будут искать для этого OraAspNetConString так очищая только что один провайдер не помогает.
Это все провайдеры они установлены в моем 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>
Так что, если вы не хотите, чтобы добавить пустую 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>
Я никогда не имел дело с любым кодом Карта сайта или мониторинга состояния здоровья в моем веб-приложение, но я до сих пор вручную добавить эти <remove/>
элементов для разных поставщиков в моей сети.config или что-то сработало бы в поисках строки соединения OraAspNetConString, которой не было.
Да, но это вне моего контроля ... есть работа вокруг? – DavidS
Простейшим решением было бы выяснить, почему строка соединения оракула находится в файле machine.config. Если вы не можете удалить его, вам необходимо переопределить его. Вы уверены, что у вас есть в вашем web.config, о котором говорил Джош? Я думал, что это должно очистить поставщиков. –
dtc