为什么CreateUserWizard Control会自动添加ASPNETDB.MDF数据库?

时间:2011-07-23 14:47:33

标签: asp.net asp.net-membership createuserwizard aspnetdb

我只想使用CreateUserWizard Control从用户收集信息并插入我的自定义数据库。我不想使用Asp.Net会员资格。

当我将此设置添加到web.config时 <membership> <providers> <clear /> </providers> </membership>

出现以下错误 Default Membership Provider must be specified.

当我从web.config中删除此设置时。页面运行成功但是createUserWizard Control会自动将ASPNETDB.MDF数据库添加到App_Data文件夹中。

问题:我们可以将CreateUserWizard与自定义数据库一起使用而不使用ASPNETDB或asp.net会员资格吗?

2 个答案:

答案 0 :(得分:3)

CreateUserWizard控件为MembershipProvider对象提供用户界面,该对象与您的网站的用户数据存储进行通信,以在数据存储中创建新的用户帐户。 CreateUserWizard依赖MembershipProvider创建用户并在必要时禁用它们(参见msdn)。

因此,如果您使用CreateUserWizard,则必须使用成员资格提供程序。

如果您不想使用标准会员提供商,则应考虑创建Custom Membership Provider

但是从您的问题来看,不清楚为什么您不想使用标准会员资格。可能值得考虑将标准Membership模式包含到您自己的数据库中的可能性,并使用已在asp.net中实现的授权功能来节省大量工作(更不用说可能的安全问题等)了。 Here您可以找到如何将Membership模式放入与应用程序数据相同的数据库中。

<强>更新

如果您仍希望阻止CreateUserWizard的CreateUser步骤通过Membership Provider创建用户,您可以尝试处理CreatingUser事件并将其LoginCancelEventArgs.Cancel属性设置为true。

示例代码:

protected void RegisterUser_CreatingUser(object sender, LoginCancelEventArgs e) 
{
 e.Cancel = true; 
} 

然后,为了移动到向导中的下一页,您需要处理NextButtonClick事件:

  1. 添加e.Cancel = False;
  2. 添加CreateUserWizard.ActiveStepIndex =(您的下一个向导步骤 指数);
  3. 之后,您需要手动创建用户,例如在FinishButtonClick事件处理程序中。

    希望它有所帮助。

答案 1 :(得分:0)

我遇到了同样的问题,我希望成员资格表,视图和存储过程在我的数据库中,因此您必须使用visual studio命令提示符运行以下命令并编写以下命令行:

Aspnet_regsql.exe -W

请注意,它是区分大小写的,然后会出现一个向导,允许您创建成员资格表,视图和存储过程

enter image description here

然后,您需要更新web.config文件以更新数据库连接字符串指向.mdf文件的连接字符串。