我正在尝试使用网站管理工具为我的服务器上的网站配置成员资格。我在我的SQL Server本地副本上创建了一个aspnetdb数据库,通过WSAT,我设法添加了几个角色,并锁定了服务器上的几个目录。
但是,当我尝试管理用户时,出现以下错误:
在应用程序配置中找不到连接名称“LocalSqlServer”,或者连接字符串为空。在System.Web.Sese.System的一个System.Web.Util.SecUtility.GetConnectionString(NameValueCollection config),System.Web.Configuration.ProvidersHelper.InstantiateProvider(ProviderSettings providerSettings,Type providerType)的System.Web.Security.SqlMembershipProvider.Initialize(String name,NameValueCollection config) p>
显然,LocalSqlServer连接字符串是确定,否则我无法添加角色,例如。
web.config的相关部分如下:
<connectionStrings>
<clear />
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer" connectionString="Data Source=(local);Initial Catalog=aspnetdb;User Id=LoginUser;Password=password;" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880" defaultUrl="~/admin/admin.aspx" />
</authentication>
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
<providers>
<clear />
<add
name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="LocalSqlServer"
applicationName="myapp" />
</providers>
</membership>
<profile>
<providers>
<clear />
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="myapp" />
</providers>
</profile>
<roleManager enabled="true">
<providers>
<clear />
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="myapp" />
</providers>
</roleManager>
</system.web>
据我所知,Clear / Remove元素应覆盖任何其他配置文件,但无论如何,我尝试将相同的连接字符串添加到相关的machine.config,但无济于事。
有什么想法吗?
作为替代方案,有什么理由不能直接调用Membership DB存储过程吗?有谁知道任何支持文件?
答案 0 :(得分:1)
经过一番研究,我找到了可能的解决方案。我想你可能已经阅读了我找到的一些帖子,但我试着指出你给我们看的版本的差异。
您尚未设置可能导致问题的defaultProvider
。
<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
有关详细信息,请参阅this link。这也是我的参考。
在connectionString
内User ID
的“d”不是大写字母。不确定它是否区分大小写。
此外,某些主题似乎根据需要设置Integrated Security=
,在connectionString
中,您可能会尝试这样做。
请参阅this link。
默认情况下,成员资格/角色提供程序使用“localSQLServer” 连接字符串,它被设置为指向本地SQL Express 来自根web.config的数据库。在大多数情况下,服务器不会 已安装SQL Express,您将收到此错误。
通过清除连接字符串应该显示这些错误。
但我相信你到处都在使用</clear>
标签,这是正确的。
您可能还想查看aspnet Forums,因为这是他们的技术。我输入了你的错误信息,实际上得到了很多结果。
如果这些建议中的任何一个都没有解决您的问题,我建议您从“scracth”开始逐个添加每个配置。祝你好运!
答案 1 :(得分:0)
我尽可能多地取消了初步尝试并重新开始。这次我创建了一个新的单独的Membership DB,并且我在machine.config中注释掉了所有角色和成员资格提供者元素......
这并没有解决问题,但在此过程中我意识到即使我修改了machine.config,WSAT仍然从某处获取角色提供程序配置。这导致我点击x86 machine.config,这反过来又让我回到应用程序池 - 应用程序池被设置为启用32位应用程序。
将此重置为false使我能够通过我的错误,而不是相反的错误 - 但是,我将分别调查此问题并在必要时创建新帖子。
我不确定为什么32位应用程序池应该导致问题 - 我仍然希望我的web.config(带有<clear />
项)应该已经替换了继承自的所有相应设置machine.config - 无论哪个版本。所以我的“重建”的其他部分可能也有所贡献;很难说。
我恐怕不是我希望的明确决议。
答案 2 :(得分:0)
这对我有用: