ASP会员奇数问题

Dav*_*idS 4 sql membership asp.net oracle

我在ASP .NET中使用Membership API,我在登台服务器上遇到了以下问题.该应用程序在我的本地计算机上正常运行 数据表存储在SQL Server上.我的本地服务器和登台服务器都指向同一个数据库服务器.当我部署到我的登台服务器时,我收到以下错误:

 Parser Error Message: The connection name 'OraAspNetConString' was not 
 found in the applications configuration or the connection string is empty. 

    Line 135:    <roleManager>
    Line 136:      <providers>
    Line 137:        <add name="OracleRoleProvider" 

type="Oracle.Web.Security.OracleRoleProvider, Oracle.Web, Version=2.111.6.20,
Culture=neutral, PublicKeyToken=89b483f429c47342" 
connectionStringName="OraAspNetConString" applicationName="" />
    Line 138:        <add name="AspNetSqlRoleProvider"   
connectionStringName="LocalSqlServer" applicationName="/" 
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, 
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    Line 139:        <add name="AspNetWindowsTokenRoleProvider" 
applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, 
System.Web, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a" />


Source File: 
c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Config\machine.config
    Line: 137 
Run Code Online (Sandbox Code Playgroud)

我不知道为什么它甚至试图用Oracle做任何事情,我web.config不包含任何与Oracle相关的东西.

有没有人知道为什么会这样?

[编辑] 在我本地机器的machine.config上我没有OracleRoleProvider键.但我的登台服务器呢.如果这有帮助.

nvu*_*ono 7

这里的老问题,但我刚刚遇到它,想分享一些更多的细节.

首先,如果您需要<clear/>在connectionStrings块中执行操作,最简单的解决方案是将空白的OraAspNetConString connectionstring条目添加回web.config:

<connectionStrings>
    <clear />
      <add name="OraAspNetConString" connectionString=" "/>    
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

在任何计算机上安装Oracle .NET软件包时会发生什么情况,它会将大量不同的提供程序安装到machine.config中,并将OraAspNetConString作为计算机级别的connectionString安装.该<clear/>元素摆脱了OraAspNetConString,并且由于Oracle的machine.config添加,默认情况下加载的所有其他Oracle提供程序在找不到connectionString时都会崩溃.

这里你探讨使用元素作为成员资格提供者的另一个答案是行不通的,因为在machine.config中添加的大多数其他oracle提供者仍然会寻找那个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>
Run Code Online (Sandbox Code Playgroud)

因此,如果您不想添加空白的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>
Run Code Online (Sandbox Code Playgroud)

我从未在我的网络应用程序中处理过任何siteMap或健康监控代码,但我仍然需要<remove/>在我的web.config中为不同的提供程序手动添加这些元素,否则会崩溃寻找不存在的OraAspNetConString连接字符串.