2

我只想使用 CreateUserWizard Control 从用户那里收集信息并插入到我的自定义数据库中。我不想使用 Asp.Net Membership 。

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

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

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

问题:我们可以在不使用 ASPNETDB 或 asp.net 成员资格的情况下将 CreateUserWizard 与自定义数据库一起使用吗?

4

2 回答 2

3

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

因此,如果您使用 CreateUserWizard,则必须使用 Membership Provider。

如果您不想使用标准的 Membership Provider,您应该考虑创建一个Custom Membership Provider

但是从您的问题来看,尚不清楚您为什么不想使用标准会员资格。可能值得考虑将标准成员模式包含到您自己的数据库中并使用已在 asp.net 中实现的授权功能为自己节省大量工作(更不用说可能的安全问题等)。在这里,您可以找到如何将 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 = (你的下一个向导步骤索引);

之后,您将需要手动创建用户,例如在 FinishButtonClick 事件处理程序中。

希望能帮助到你。

于 2011-07-23T16:35:27.283 回答
0

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

Aspnet_regsql.exe -W

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

在此处输入图像描述

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

于 2011-07-23T15:14:56.967 回答