Asp.net mvc 3 实现自定义成员资格提供程序时,usercreate出现问题

Asp.net mvc 3 实现自定义成员资格提供程序时,usercreate出现问题,asp.net-mvc-3,membership-provider,Asp.net Mvc 3,Membership Provider,我想为我的asp.net mvc应用程序创建一个自定义成员资格提供程序,但默认CreateUser()方法中的参数数量不是我想要的。因为我的用户表不同,所以我希望传递自己的参数。以下是我用于UserCreate()方法的代码: 这里是我得到的错误: 错误2 MyMemberShipProvider.CreateUser(字符串,字符串,字符串,字符串,字符串,bool,object,out System.Web.Security.MembershipCreateStatus)∶找不到合适的方法来

我想为我的asp.net mvc应用程序创建一个自定义成员资格提供程序,但默认CreateUser()方法中的参数数量不是我想要的。因为我的用户表不同,所以我希望传递自己的参数。以下是我用于UserCreate()方法的代码:

这里是我得到的错误:


错误2 MyMemberShipProvider.CreateUser(字符串,字符串,字符串,字符串,字符串,bool,object,out System.Web.Security.MembershipCreateStatus)∶找不到合适的方法来覆盖

一个好方法是同时使用成员资格提供程序和配置文件提供程序

<membership defaultProvider="MongoDBProvider" userIsOnlineTimeWindow="15">
  <providers>
    <clear />
    <add
      name="MongoDBProvider"
      type="ASPNetProvidersForMongoDB.MongoDBMembershipProvider, ASPNetProvidersForMongoDB"
      connectionStringName="MongoProvidersDBConnStr"
      enablePasswordRetrieval="true"
      enablePasswordReset="true"
      requiresQuestionAndAnswer="false"
      writeExceptionsToEventLog="true"
      mongoProviderDatabaseName ="aspnetproviderdb"
      mongoProviderUsersCollectionName="Users"
      applicationName="WebUI4"
      />



  </providers>
</membership>

<roleManager defaultProvider="MongoDBProvider" enabled="true">
  <providers>
    <clear />
    <add applicationName="WebUI4"
        name="MongoDBProvider"
         type="ASPNetProvidersForMongoDB.MongoDBRolesProvider, ASPNetProvidersForMongoDB"
        connectionStringName="MongoProvidersDBConnStr"
         writeExceptionsToEventLog="true"
      mongoProviderDatabaseName ="aspnetproviderdb"
      mongoProviderUsersCollectionName="Roles"
         />
  </providers>
</roleManager>

<profile defaultProvider="MongoDBProvider" inherits="MyCompany.Security.Profile.ProfileCommon">
  <providers>
    <add
      applicationName="WebUI4"
      name="MongoDBProvider"
      type="ASPNetProvidersForMongoDB.MongoDBProfileProvider, ASPNetProvidersForMongoDB"
      connectionStringName="MongoProvidersDBConnStr"
      writeExceptionsToEventLog="true"
      mongoProviderDatabaseName ="aspnetproviderdb"
      mongoProviderUsersCollectionName="Profiles" />
  </providers>
</profile>
会员资格提供商将管理用户的创建、密码验证、跟踪谁以及何时登录到您的应用程序等

配置文件提供程序允许您管理用户的多个属性

因此,您需要执行以下操作:

  • 实现您自己的成员资格提供程序。 请参阅msdn.microsoft.com/en-us/library/f1kyba5e.aspx或msdn.microsoft.com/en-us/library/44w5aswa.aspx

  • 实现您的配置文件提供程序(或使用现有的配置文件提供程序)。
    请参见此处msdn.microsoft.com/en-us/library/0580x1f5.aspx或msdn.microsoft.com/en-us/library/ta63b872.aspx

  • 实现一个ProfileCommon类,该类定义要用于用户的属性。 您的概要文件提供程序应该知道如何处理ProfileCommon类

  • 对于ProfileCommon示例,我为自定义MongoDB ASPNet提供程序实现了以下功能:github.com/agacian/MongoDBASPNetProviders/blob/master/aspnetproviders sformongodb/ProfileCommon.cs

  • 配置WebConfig部分以定义自定义实现。 (见下面的示例)
  • 接下来的示例是我为MongoDB开发的自定义成员资格、角色和概要文件提供程序的一部分。 看

    以下是我在应用程序中使用的配置,以利用我的自定义成员资格提供商

    <membership defaultProvider="MongoDBProvider" userIsOnlineTimeWindow="15">
      <providers>
        <clear />
        <add
          name="MongoDBProvider"
          type="ASPNetProvidersForMongoDB.MongoDBMembershipProvider, ASPNetProvidersForMongoDB"
          connectionStringName="MongoProvidersDBConnStr"
          enablePasswordRetrieval="true"
          enablePasswordReset="true"
          requiresQuestionAndAnswer="false"
          writeExceptionsToEventLog="true"
          mongoProviderDatabaseName ="aspnetproviderdb"
          mongoProviderUsersCollectionName="Users"
          applicationName="WebUI4"
          />
    
    
    
      </providers>
    </membership>
    
    <roleManager defaultProvider="MongoDBProvider" enabled="true">
      <providers>
        <clear />
        <add applicationName="WebUI4"
            name="MongoDBProvider"
             type="ASPNetProvidersForMongoDB.MongoDBRolesProvider, ASPNetProvidersForMongoDB"
            connectionStringName="MongoProvidersDBConnStr"
             writeExceptionsToEventLog="true"
          mongoProviderDatabaseName ="aspnetproviderdb"
          mongoProviderUsersCollectionName="Roles"
             />
      </providers>
    </roleManager>
    
    <profile defaultProvider="MongoDBProvider" inherits="MyCompany.Security.Profile.ProfileCommon">
      <providers>
        <add
          applicationName="WebUI4"
          name="MongoDBProvider"
          type="ASPNetProvidersForMongoDB.MongoDBProfileProvider, ASPNetProvidersForMongoDB"
          connectionStringName="MongoProvidersDBConnStr"
          writeExceptionsToEventLog="true"
          mongoProviderDatabaseName ="aspnetproviderdb"
          mongoProviderUsersCollectionName="Profiles" />
      </providers>
    </profile>
    
    
    

    我希望这能有所帮助。

    可能的重复:你的意思是我可以通过继承MemberShipProvider并覆盖createuser来实现我自己的MemberShipProvider,就像你发送的链接中一样?是的,这就是为什么我指向smiliar问题的原因,所以你可以看到他们是如何解决的。