通过Asp.Net网站管理员工具成为Asp.Net成员
我用aspnet_regsql创建了一个数据库,该数据库是在sql Server 2008中创建的,而不是在我的项目的数据文件夹中(我需要手动将其移动到该文件夹吗?。通过Asp.Net网站管理员工具成为Asp.Net成员,asp.net,sql-server-2008,asp.net-membership,Asp.net,Sql Server 2008,Asp.net Membership,我用aspnet_regsql创建了一个数据库,该数据库是在sql Server 2008中创建的,而不是在我的项目的数据文件夹中(我需要手动将其移动到该文件夹吗?。 接下来,在Web站点管理工具中,我转到提供者部分,单击DonTest按钮 我有一个错误: 无法与建立连接 数据库。如果你还没有 已创建SQL Server数据库,请退出 网站管理工具,使用 aspnet_regsql命令行实用程序 要创建和配置数据库, 然后返回此工具进行设置 提供者 也许我需要在web.config中设置一些东西
接下来,在Web站点管理工具中,我转到提供者部分,单击DonTest按钮 我有一个错误: 无法与建立连接 数据库。如果你还没有 已创建SQL Server数据库,请退出 网站管理工具,使用 aspnet_regsql命令行实用程序 要创建和配置数据库, 然后返回此工具进行设置 提供者 也许我需要在web.config中设置一些东西,比如成员资格设置或连接字符串(或者ASP.NET网站管理员工具应该为我创建这些设置) 更新:
可能是因为我使用的是SQL server 2008 full而不是express 更新2: 在网站管理工具中为我的aspnetdb数据库设置成员资格部分和连接字符串后,我打开了安全->安全设置向导->定义角色(第4阶段),出现以下错误: 遇到错误。请返回上一页并重试 以下消息可能有助于解决此问题 诊断问题:无法诊断 连接到SQL Server数据库。在 System.Web.Administration.WebAdminPage.CallWebAdminHelperMethod(布尔值 isMembership,字符串方法名, 对象[]参数,类型[] 参数类型)在 ASP.security\u wizard\u wizardpermission\u ascx.OnInit(事件参数) e) 在 System.Web.UI.Control.InitRecursive(控件 namingContainer)在 System.Web.UI.Control.InitRecursive(控件 namingContainer)在 System.Web.UI.Control.InitRecursive(控件 namingContainer)在 System.Web.UI.Control.InitRecursive(控件 namingContainer)在 System.Web.UI.Control.InitRecursive(控件 namingContainer)在 System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔值 includeStagesAfterAsyncPoint)
打开sql management studio并打开主数据库,进行新的查询并键入
sp_configure 'user instances enabled','1'
执行此命令,然后键入
reconfigure
并执行此操作,使更改生效。有关sp_configure的更多信息,如果您希望列出所有配置,则可以阅读,然后执行sp_configure,不带任何参数。是的,您需要在web.config中修改连接字符串 在web.config中,您可能会在
元素中看到类似的内容:
<membership>
<providers>
<clear />
<add connectionStringName="LocalSqlServer"
name="AspNetSqlMembershipProvider"
[...]
type="System.Web.Security.SqlMembershipProvider,
System.Web,
Version=2.0.0.0,
Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
调整值以适合您的系统-我建议集成安全性,而不是将数据库登录名和密码存储在web.config中,但YMMV(例如,在我的共享主机上,我无法使用集成安全性,因此必须提供用户/密码详细信息)
网站管理工具也将尊重这些连接字符串
编辑以回复评论
您是否已成功登录?还是创建了一个用户?我只是想排除您已经配置好连接字符串并正常工作的可能性
您是否已配置并打开角色提供程序?您是否更新了其中的“connectionStringName”属性
请注意,与前面一样,machine.config为您指定了一个默认角色提供程序,该提供程序尝试指向本地SqlExpress实例,这可能是连接错误的来源
<!-- Note enabled="true" - you need to turn this one on! -->
<roleManager enabled="true">
<providers>
<clear />
<add connectionStringName="MyConnectionString"
[...]
type="System.Web.Security.SqlRoleProvider,
System.Web,
Version=2.0.0.0,
Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
一旦你配置好了,一切都会好起来的
如果您无法创建用户/登录,我会检查:
连接字符串-确保名称匹配,确保数据源
与您的服务器实例匹配(不一定只是您机器的名称,它可能类似于“MachineName\SqlServer”)
如果您使用的是集成安全性,则需要确保您已为您的网站提供了在数据库中以适当权限运行的帐户:您应该发现您的数据库中有许多角色,从aspnet\uu
开始,以确保您可以创建用户(如果您有注册表,则需要这些角色)您应该将该帐户添加到aspnet\u XXXX\u FullAccess
角色中(会员、个性化、个人资料和角色各一个)
按照以下步骤将会员资格正确集成到您的网站(如果您看到上述错误,如
“无法建立与数据库的连接。如果尚未创建SQL Server数据库,请退出网站管理工具,使用aspnet_regsql命令行实用程序创建和配置数据库,然后返回此工具以设置提供程序
”)
第1步:
从计算机上的C:\windows\Microsoft.NET\Framework\v2.0.50727文件夹运行aspnet\u regsql.exe实用程序。选择或双击aspnet_regsql.exe实用程序将打开向导,如下所示
选择上面窗口中的“下一步”按钮将打开下一个窗口,您可以在其中为应用程序服务配置SQL Server,也可以从现有数据库中删除应用程序服务信息
第二步:
选择configure SQL Server for application services单选按钮以安装新数据库,然后选择Next按钮
步骤3
输入您的SQL Express服务器名称,如下所示。请注意,您可以将application services数据库名称更改为所需的名称(默认情况下为aspnetdb)。(或者)您可以选择Sql Server身份验证(需要用户名、密码和相应的数据库名称)
注意,我将数据库命名为ASPNETServices
第4步:
选择Next(下一步)按钮并确认您的设置正确,以便继续安装(如下图所示),然后选择Next(下一步)按钮
步骤5
选择上面窗口上的“下一步”按钮将进入配置
<!-- Note enabled="true" - you need to turn this one on! -->
<roleManager enabled="true">
<providers>
<clear />
<add connectionStringName="MyConnectionString"
[...]
type="System.Web.Security.SqlRoleProvider,
System.Web,
Version=2.0.0.0,
Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
<roleManager enabled="true">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider"
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="MyConnectionString"/>
</providers>
</roleManager>