Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Seltsames Problem der ASP-Mitgliedschaft

Alte Frage hier, aber ich bin gerade darauf gestoßen und wollte einige weitere Details teilen.

Zuerst die einfachste Lösung, wenn Sie einen <clear/> ausführen müssen in Ihrem connectionStrings-Block besteht darin, einen leeren OraAspNetConString-Verbindungszeichenfolgeneintrag wieder in Ihre web.config einzufügen:

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

Was passiert, wenn Sie das Oracle .NET-Paket installieren Auf jedem Ihrer Computer installiert es eine Menge verschiedener Anbieter in Ihrer machine.config zusammen mit dem OraAspNetConString als ConnectionString auf Computerebene. Der <clear/> -Element entfernt diesen OraAspNetConString und dank Oracles machine.config-Ergänzungen stürzen alle anderen standardmäßig geladenen Oracle-Provider ab, wenn sie den connectionString nicht finden können.

Die andere Antwort hier, bei der Sie die Verwendung des Elements für Mitgliedschaftsanbieter untersucht haben, funktionierte nicht, da die meisten anderen Oracle-Anbieter, die in der machine.config hinzugefügt wurden, immer noch nach diesem OraAspNetConString suchen werden Es hilft Ihnen also nicht, nur diesen einen Anbieter zu löschen.

Dies sind alle Anbieter, die sie in meiner machine.config installiert haben:

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

Wenn Sie also den leeren OraAspNetConString nicht hinzufügen möchten, müssen Sie sicherstellen, dass Sie entweder <clear/> jeden der folgenden Oracle-Anbieter oder gehen Sie hinein und fügen Sie <remove name=x /> hinzu Element für jede Anbieterklasse wie folgt:

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

Ich habe mich in meiner Web-App nie mit SiteMap- oder Zustandsüberwachungscode befasst, aber ich musste diese trotzdem manuell hinzufügen <remove/> Elemente für die verschiedenen Anbieter in meiner web.config oder etwas würde abstürzen, wenn ich nach einer OraAspNetConString-Verbindungszeichenfolge suche, die nicht vorhanden war.