Oracle
 sql >> Database >  >> RDS >> Oracle

Problema dispari di iscrizione ASP

Vecchia domanda qui, ma ci sono appena imbattuto e volevo condividere alcuni dettagli in più.

Innanzitutto, la soluzione più semplice se devi eseguire un <clear/> nel blocco connectionStrings è aggiungere una voce connectionstring OraAspNetConString vuota nel tuo web.config:

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

Cosa succede quando installa il pacchetto Oracle .NET su una qualsiasi delle tue macchine installa un sacco di provider diversi nel tuo machine.config insieme a OraAspNetConString come connectionString a livello di macchina. Il <clear/> element si sbarazza di OraAspNetConString e grazie alle aggiunte machine.config di Oracle tutti gli altri provider Oracle caricati per impostazione predefinita vanno in crash quando non riescono a trovare connectionString.

L'altra risposta qui in cui hai esplorato l'utilizzo dell'elemento per i provider di appartenenza non ha funzionato perché la maggior parte degli altri provider Oracle aggiunti in machine.config cercherà ancora quell'OraAspNetConString quindi cancellare solo un provider non ti aiuta.

Questi sono tutti i provider che hanno installato in my 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>

Quindi, se non vuoi aggiungere l'OraAspNetConString vuoto, dovresti assicurarti di essere <clear/> ognuno dei seguenti provider Oracle oppure accedi e aggiungi un <remove name=x /> elemento a ciascuna classe del provider in questo modo:

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

Non ho mai avuto a che fare con alcun codice SiteMap o Health Monitoring nella mia app Web, ma dovevo comunque aggiungere manualmente questi <remove/> elementi per i diversi provider nel mio web.config o qualcosa si arresterebbe in modo anomalo alla ricerca di una stringa di connessione OraAspNetConString che non era presente.