Oracle
 sql >> Base de données >  >> RDS >> Oracle

Problème étrange d'adhésion à l'ASP

Vieille question ici, mais je viens de la rencontrer et je voulais partager plus de détails.

Tout d'abord, la solution la plus simple si vous devez faire un <clear/> dans votre bloc connectionStrings consiste à ajouter une entrée de chaîne de connexion OraAspNetConString vide dans votre web.config :

<connectionStrings>
    <clear />
      <add name="OraAspNetConString" connectionString=" "/>    
</connectionStrings>

Que se passe-t-il lorsque vous installez le package Oracle .NET sur l'une de vos machines, il installe une tonne de fournisseurs différents dans votre machine.config avec OraAspNetConString en tant que connectionString au niveau de la machine. Le <clear/> se débarrasse de cet OraAspNetConString et grâce aux ajouts machine.config d'Oracle, tous les autres fournisseurs Oracle chargés par défaut se bloquent lorsqu'ils ne trouvent pas la connectionString.

L'autre réponse ici où vous avez exploré l'utilisation de l'élément pour les fournisseurs d'adhésion n'a pas fonctionné car la plupart des autres fournisseurs d'oracle ajoutés dans le machine.config vont toujours rechercher ce OraAspNetConString donc effacer un seul fournisseur ne vous aide pas.

Voici tous les fournisseurs qu'ils ont installés dans ma 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>

Donc, si vous ne voulez pas ajouter le vide OraAspNetConString, vous devez vous assurer que vous avez soit <clear/> chacun des fournisseurs Oracle suivants ou entrez et ajoutez un <remove name=x /> élément à chaque classe de fournisseur comme ceci :

<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>

Je n'ai jamais traité de siteMap ou de code de surveillance de la santé dans mon application Web, mais j'ai quand même dû ajouter manuellement ces <remove/> éléments pour les différents fournisseurs dans mon web.config ou quelque chose plantait à la recherche d'une chaîne de connexion OraAspNetConString qui n'était pas là.