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键.但我的登台服务器呢.如果这有帮助.
这里的老问题,但我刚刚遇到它,想分享一些更多的细节.
首先,如果您需要<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连接字符串.