Asp.net ASP成员资格奇数问题

Asp.net ASP成员资格奇数问题,asp.net,sql,oracle,membership,Asp.net,Sql,Oracle,Membership,我在ASP.NET中使用成员API,在我的登台服务器上遇到以下问题。该应用程序在我的本地机器上运行良好。数据表存储在SQL Server上。我的本地服务器和临时服务器都指向同一个DB服务器。部署到暂存服务器时,出现以下错误: Parser Error Message: The connection name 'OraAspNetConString' was not found in the applications configuration or the connection strin

我在ASP.NET中使用成员API,在我的登台服务器上遇到以下问题。该应用程序在我的本地机器上运行良好。数据表存储在SQL Server上。我的本地服务器和临时服务器都指向同一个DB服务器。部署到暂存服务器时,出现以下错误:

 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 
Parser错误消息:连接名称“OraasNetConsting”未找到
在应用程序配置中找到,或者连接字符串为空。
第135行:
第136行:
第137行:
第138行:
第139行:
源文件:
c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Config\machine.Config
第行:137
我不知道为什么它甚至试图对Oracle做任何事情,我的
web.config
不包含任何与Oracle相关的内容

有人知道为什么会这样吗

[编辑]
在本地计算机的machine.config上,我没有OracleRoleProvider密钥。但是我的暂存服务器会。如果这有帮助。

此错误表示您在machine.conf而不是web.config中有该文件。

您需要在配置文件中定义自己的提供程序,例如,这里有一个成员资格提供程序:

    <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
        <providers>
            <clear/>
            <add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MyConnection" applicationName="MyApp"/>
        </providers>
    </membership>


基本上,这将删除在系统级别定义的所有提供程序,这就是为什么我们要清除,然后定义新的提供程序。如果您需要系统级的提供商,您可以将自己的提供商定义为默认提供商,或者在应用程序代码中专门请求提供商。

这里有一个老问题,但我刚刚遇到了这个问题,希望与大家分享更多细节

首先,如果您需要在connectionstring块中执行
,最简单的解决方案是将一个空白的OraAspNetConstructing connectionstring条目添加回web.config:

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

在您的任何计算机上,它都会将大量不同的提供程序安装到machine.config中,并将OraasNetConstructing作为计算机级连接字符串。
元素摆脱了OraAspNetConString,并且由于Oracle的machine.config添加,默认情况下加载的所有其他Oracle提供程序在找不到connectionString时都会崩溃

这里的另一个答案是,您探索了如何使用元素作为成员资格提供程序,但这个答案不起作用,因为machine.config中添加的大多数其他oracle提供程序仍将寻找或AspNetConstructing,因此仅清除一个提供程序对您没有帮助

以下是他们安装到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>

这样,如果您不想添加空白的ORASPASNETFISH,则必须确保您每一个下面的Oracle提供程序或代码“>>代码”,并添加一个<代码> 元素到每个提供者类,例如:

<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应用程序中处理过任何站点地图或运行状况监视代码,但我仍然必须在我的web.config中为不同的提供者手动添加这些
元素,否则查找不存在的OraasNetConstructing连接字符串时会崩溃。

只需为“OraasNetConstructing”添加一个空连接字符串即可为我工作

<connectionStrings>
    <clear />
    <add name="OraAspNetConString" connectionString=" "/>
    .................. your other connectionstrings goes here .....
</connectionStrings>

.................. 您的其他连接字符串位于此处。。。。。

只需添加一个名为OraAspNetConString的虚拟连接字符串即可。如果你确定你已经移除了它,它就不应该运行。但这可能会让你继续前进。还要确保为RoleProvider和Membership做到了这一点。最简单的解决方案是找出machine.config中存在oracle连接字符串的原因。如果无法删除它,则需要覆盖它。你确定你的web.config中有Josh提到的吗?我想这应该能让供应商清白。