3

参考

http://msdn.microsoft.com/en-us/library/6tc47t75%28v=VS.80%29.aspx

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

问题

在标题下的第二个链接中,Create a Custom Membership Provider您会注意到他们提到了这一点

您将需要创建一个自定义成员资格提供程序,该提供程序既支持您的自定义成员资格用户类型,又支持您的自定义成员资格数据存储。可以编写自定义成员资格提供程序的 GetUser 和 CreateUser 方法来返回自定义成员资格用户类型的对象。

下面是我的自定义会员用户自定义字段

自定义会员用户

 public class CustomMembershipUser : MembershipUser
    {
        //private fields for internal use
        private bool _isMarried;
        private bool _hasLicense;
        private string _address;
        private int _userId;

        //public fields for use by end user

        public int UserId
        {
            get { return _userId; }
            set { _userId = value; }
        }
...

自定义会员提供者

public class CustomMembershipProvider : MembershipProvider
    {
        .....

        public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
        {
            throw new NotImplementedException();
        }
....

我完全按照他们告诉我的去做,像这样返回我的自定义类型的会员用户

public override **CustomMembershipUser** CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)

但后来我被 IDE 抱怨说 在覆盖 MembershipProvider.CreateUser 时无法更改返回类型。那我现在该怎么办

  • 创建另一个具有相同参数的方法并返回自定义会员用户?
  • 我不需要密码问题,安全问题字段我如何摆脱它们?
4

2 回答 2

4

您需要MembershipUser在函数中返回一个实例,该实例是它的返回类型。目前它没有返回它应该返回的东西。

在 codeproject 有一个很好的教程:Custom Membership Providers。您可能会发现它有助于了解您在哪里做得不对。

于 2011-11-11T06:26:52.790 回答
-1

您不应创建返回 CustomMembershipUser 的新方法。

您应该在自定义成员资格提供程序中只有MembershipUser CreateUser(...)。在您返回之前,您需要将 CustomMembershipUser 转换为 MembershipUser。

例如,当您返回时跟随。

return (MembershipUser)new CustomMembershipUser();

于 2011-11-11T06:30:27.077 回答