ASP 会员奇怪问题

2024-01-19

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

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

有谁知道为什么会发生这种情况?

[Edit]在我的本地计算机的 machine.config 上,我没有 OracleRoleProvider 密钥。但我的临时服务器可以。如果有帮助的话。


这是老问题,但我刚刚遇到它并想分享更多细节。

首先,如果您需要执行以下操作,这是最简单的解决方案<clear/>在你的connectionStrings块中,将一个空白的OraAspNetConString连接字符串条目添加回你的web.config中:

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

当你时会发生什么安装 Oracle .NET 包 http://docs.oracle.com/cd/B28359_01/win.111/e10928/IntroInstallation.htm在您的任何机器上,它都会将大量不同的提供程序与 OraAspNetConString 作为机器级连接字符串一起安装到您的 machine.config 中。这<clear/>element 摆脱了 OraAspNetConString,并且由于 Oracle 的 machine.config 添加,默认加载的所有其他 Oracle 提供程序在找不到连接字符串时都会崩溃。

您探索使用成员资格提供程序元素的另一个答案不起作用,因为在 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>

因此,如果您不想添加空白 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>

我从未在我的网络应用程序中处理过任何 siteMap 或运行状况监控代码,但我仍然必须手动添加这些<remove/>我的 web.config 中不同提供程序的元素或者某些东西在寻找不存在的 OraAspNetConString 连接字符串时会崩溃。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP 会员奇怪问题 的相关文章

随机推荐