ASP.NET网站管理员工具通过ASP.NET成员资格

4
我使用aspnet_regsql创建了一个数据库,该数据库在sql sever 2008中创建,而不是在我的项目数据文件夹中(我需要手动将它移动到文件夹吗?)。接下来,我在Web Site Administration Tool中进入提供程序部分并单击“测试”按钮。我得到了一个错误:
无法连接到数据库。如果您尚未创建SQL Server数据库,请退出Web Site Administration工具,使用aspnet_regsql命令行实用程序创建和配置数据库,然后返回此工具以设置提供程序。
也许我需要在web.config中设置一些内容,比如成员身份设置或连接字符串(或者ASP.NET网站管理员工具应该为我创建这些设置)?
更新:也许是因为我正在使用完整的SQL server 2008而不是express?
更新2:在Web Site Administration Tool中将成员身份部分和连接字符串设置为我的aspnetdb数据库后,我打开了安全性->安全设置向导->定义角色(第4阶段),我遇到了这个错误:
遇到错误,请返回上一页重试。
以下消息可能有助于诊断问题:无法连接到SQL Server数据库。
4个回答

5

是的,您需要修改web.config中的连接字符串。

在web.config中查找,您可能会在<membership>元素中看到类似于以下内容:

<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>
connectionStringName属性告诉框架在<connectionStrings>元素中查找名为“LocalSqlServer”的连接字符串——这可能在您的web.config中尚未定义,因为它可以从.Net Framework的核心配置目录Machine.Config中继承。
您应该为连接字符串选择一个新名称,并更新membership、roles和profile(如果您正在使用它们)提供程序以使用新名称。
然后,在<connectionStrings>元素中添加以下内容:
<connectionStrings>
  <remove name="LocalSqlServer" />
  <add name="MyConnectionString"
       connectionString="Data Source=[ServerName];Initial Catalog=[DatabaseName];Integrated Security=True"
       providerName="System.Data.SqlClient" />
</connectionStrings>

根据您的系统调整值-我建议在web.config中使用集成安全性,而不是存储数据库登录和密码,但因人而异(例如,在我的共享主机上,我无法使用集成安全性,因此必须提供用户/密码详细信息)。

网站管理工具也将遵守这些连接字符串。

编辑以响应评论

您是否成功登录?或者创建了一个用户?我只是想排除您是否配置和运行了连接字符串?

您是否已经配置并启用了Roles Provider?您是否更新了其中的“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>

如果您想了解有关省略的属性的更多详细信息,我建议查看文档:

一旦您配置好了这些内容,它应该可以正常工作。

如果您无法创建用户/登录,请检查以下内容:

  1. 连接字符串——确保名称匹配,确保与您的服务器实例相匹配(不总是仅仅是计算机名称,可能是类似于“MachineName\SqlServer”的东西)。
  2. 如果您使用集成安全性,则需要确保在数据库中为站点运行的帐户分配了适当的权限:您应该发现您的数据库中有许多以开头的角色,为了确保您可以创建用户(如果您有注册表单则需要),您应该将该帐户添加到角色中(每个角色对应会员资格、个性化、配置文件和角色)。

我在web.config中没有<membership>部分,所以我手动创建了它,并且它可以工作。 现在我的问题是:1)是否有选项可以自动在web.config中生成<membership>设置,还是只能手动创建? 2)我可以使用带有SQL Server 2008完整版的本地数据库文件的数据文件夹吗? - luppi
抱歉回复晚了,整天都在开会。 - Zhaph - Ben Duguid

0

打开 SQL 管理工具并打开主数据库,创建一个新的查询并输入以下内容:

sp_configure 'user instances enabled','1'

执行这个,然后输入

reconfigure 

并且执行此操作,以便更改生效。如需有关 sp_configure 的更多信息,您可以阅读 http://msdn2.microsoft.com/en-us/library/ms188787.aspx 如果您希望列出所有配置,请执行不带任何参数的 sp_configure。


我遇到了错误: 配置选项'user instances enabled'不存在,或者它可能是一个高级选项。 - luppi
你正在使用哪个版本的 SQL Server?上述内容仅适用于 Express 版本。 - bristows
请查看我添加的更新... SQL Server 2008完整版... 如何使用完整版? - luppi

0

我也遇到了类似的问题,因为这是我第一次使用asp.net membership。如果你设置<roleManager Enabled="False" />,你就能够成功创建用户。

我猜测,在web.config中为AspNetSqlRoleProvider添加一个额外的提供程序,并给它一个连接字符串,该连接字符串指向asp服务数据库,并设置一个用户来访问SQL端的角色管理信息(查看sql用户的属性,了解“此用户拥有的模式”和“数据库角色成员资格”),这将允许工具正确地进入数据库。

你在 SQL Server 上使用的是 Windows 身份验证还是 SQL 身份验证?
PS -
我越读懂 Zhaph 的回答,就越喜欢它。他提供了一个链接到 AspNetSqlRoleProvider 元素的 msdn 模式(不要被微软说文档不存在所迷惑,只需从“其他版本”下拉列表中选择适当的版本)。
更新 在发布这篇文章之前,我做了一件坏事,但我确实跟进了,并将以下内容添加到 web.config 中,这样我就可以继续编辑用户并添加/管理角色了。
<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>

正如我之前提到的,我的连接字符串中指定的用户需要 aspnet_Roles_...Access 属性以及 aspnet_Membership_...Access 属性,除非您使用 integrated security=true<identity impersonate="true" userName="windowsUser" password="winUsrPassword" />,在这种情况下,您的 Windows 用户需要这些属性。


0

按照以下步骤进行适当的会员集成到您的网站(如果您看到上述错误,如

"无法建立到数据库的连接。如果您尚未创建 SQL Server 数据库,请退出 Web Site Administration 工具,使用 aspnet_regsql 命令行实用程序来创建和配置数据库,然后返回此工具以设置提供程序。")。

步骤1:

从您的计算机上的 C:\windows\Microsoft.NET\Framework\v2.0.50727 文件夹运行 aspnet_regsql.exe 实用程序。选择或双击 aspnet_regsql.exe 实用程序将打开向导如下。

enter image description here

在上面的窗口中选择“下一步”按钮会打开下一个窗口,在该窗口中,您可以配置 SQL Server 以用于应用程序服务,或从现有数据库中删除应用程序服务信息。

步骤2:

选择“为应用程序服务配置 SQL Server”单选按钮以安装新数据库,并选择“下一步”按钮。

enter image description here

步骤3

按照下面所示的方式输入您的SQL Express服务器名称。请注意,您可以将应用程序服务数据库名称更改为所需的名称(默认情况下为aspnetdb)。或者,您可以选择Sql Server身份验证(需要用户名、密码、相应的数据库名称)。

请注意,我将数据库命名为ASPNETServices。

enter image description here

步骤4:

选择“下一步”按钮,并确认您的设置正确,以继续安装(如下图所示),然后选择“下一步”按钮。

enter image description here

步骤 5

在上述窗口上选择“下一步”按钮,成功安装 ASP.NET 应用程序服务数据库后,将进入以下确认窗口。最后按“完成”按钮。

enter image description here

步骤 6

您将会看到已安装的 ASPNET Services 数据库已准备好在您的 ASP.NET 应用程序中使用 输入图像描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接