【问题标题】:ASP.Net Using the Membership.CreateUser MethodASP.Net 使用 Membership.CreateUser 方法
【发布时间】:2011-03-17 10:32:21
【问题描述】:

我在使用 members.createuser 方法时遇到问题。我的代码在下面,我得到一个空异常作为运行时。非常感谢任何帮助。

    Dim username As String = userNameTxt.Text
    Dim password As String = passwordTxt.Text
    Dim email As String = emailTxt.Text
    Dim status As New MembershipCreateStatus

    Dim blank As String = ""
    Dim provider As MembershipProvider
    Dim providerUserKey As New System.Object

    Dim user As MembershipUser
    user = provider.CreateUser(username, password, email, blank, blank, True, providerUserKey, status)

【问题讨论】:

    标签: asp.net vb.net webforms asp.net-membership


    【解决方案1】:

    您需要 MembershipProvider 抽象类的具体实现 您可以创建自己的或使用现有的。您还需要在 web.config 中进行设置:

    <connectionStrings>
      <add name="MySqlConnection" connectionString="Data Source=MySqlServer;Initial Catalog=aspnetdb;Integrated Security=SSPI;" />
    </connectionStrings>
    <system.web>
    ...
      <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
        <providers>
          <clear />
          <add 
            name="SqlProvider" 
            type="System.Web.Security.SqlMembershipProvider" 
            connectionStringName="MySqlConnection"
            applicationName="MyApplication"
            enablePasswordRetrieval="false"
            enablePasswordReset="true"
            requiresQuestionAndAnswer="true"
            requiresUniqueEmail="true"
            passwordFormat="Hashed" />
        </providers>
      </membership>
    

    http://msdn.microsoft.com/en-us/library/ff648345.aspx

    然后你可以使用Membership.CreateUser,不需要创建实例,它是静态的 它还有一个在 web.config 中设置的默认会员提供程序的属性:Membership.Provider

    【讨论】:

    • 这似乎奏效了,我不再收到错误,但它也没有将用户添加到会员表中:(
    • 很难说问题出在哪里,您使用的是哪个提供商?
    • 我已将默认提供程序设置为“AspNetSqlMembershipProvider”,然后使用上述所有代码指定该提供程序。
    • 您必须使用 Aspnet_regsql 工具为该提供商创建数据库。在这里阅读更多msdn.microsoft.com/en-us/library/ms229862(v=vs.80).aspx
    • 谢谢,您将配置设置具体化是绝对正确的。我没有包括导致它塞满的 defaultProvider。现在工作!
    【解决方案2】:

    使用 Membership 类的共享方法。您必须配置成员资格提供程序以在您的 web.config 文件中使用。

    那就简单了:

    Membership.CreateUser(username, password, email, blank, blank, True, providerUserKey, status)
    

    有关如何配置您的会员提供商的详细信息,请参阅msdn Memberhip doc

    【讨论】:

    • 如何在 web.config 文件中配置会员提供程序?
    • 用指向 msdn 文档的链接编辑了我的帖子。这取决于您使用的会员资格提供商类型。有一个开箱即用的 SQL 和一个 Active Directory。
    【解决方案3】:
     Dim provider As MembershipProvider 
    

    然后

    provider.CreateUser(..
    

    provider 为 null,因为您实际上还没有创建新实例

    你应该使用 System.Web.Security.Membership.CreateUser

    【讨论】:

    • 我确实尝试过 Dim provider As MembershipProvider = new MembershipProvider() 但我收到一条错误消息“new cannot be used on a class that is declared 'MustInherit'”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多