ここに古い質問がありましたが、私はそれに遭遇し、もう少し詳細を共有したいと思いました。
まず、<clear/>
を実行する必要がある場合の最も簡単な解決策 connectionStringsブロックで、空白のOraAspNetConString接続文字列エントリをweb.configに追加し直します。
<connectionStrings>
<clear />
<add name="OraAspNetConString" connectionString=" "/>
</connectionStrings>
Oracle.NETパッケージをインストールするとどうなりますか> どのマシンでも、マシンレベルのconnectionStringとしてOraAspNetConStringとともに、多数の異なるプロバイダーがmachine.configにインストールされます。 <clear/>
elementはそのOraAspNetConStringを取り除き、Oracleのmachine.configの追加のおかげで、デフォルトでロードされている他のすべてのOracleプロバイダーは、connectionStringが見つからないとクラッシュします。
machine.configに追加された他のほとんどのOracleプロバイダーが引き続きそのOraAspNetConStringを探しているため、メンバーシッププロバイダーの要素を使用して調査した他の回答は機能しませんでした。 そのため、1つのプロバイダーだけをクリアしても役に立ちません。
これらはすべて、私の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>
WebアプリでsiteMapまたはHealthMonitoringコードを処理したことはありませんが、これらの<remove/>
を手動で追加する必要がありました。 web.configのさまざまなプロバイダーの要素などがクラッシュし、そこにないOraAspNetConString接続文字列を探していました。