我的自定义MembershipProvider“没有实现继承的抽象成员'System.Web.Security.MembershipProvider。*”

时间:2014-12-18 19:26:08

标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-membership

我正在尝试创建自定义MembershipProvider,因此我创建了一个名为CustomMemberhsipProvider的类,并使其继承自MembershipProvider

namespace Solution.Models
{
    public class CustomMembershipProvider : MembershipProvider
    {
        public bool CheckPassword(string password, string SaltedHash)
        {
            //code
        }

        public string CreateHash(string saltAndPassword)
        {
            //code
        }

        public string GetUserRoles(string userName)
        {
            //more code etc.
        }
    }
}

然后我在我的web.config文件中引用了它:

<membership defaultProvider="CustomMembershipProvider">
  <providers>
    <clear />
    <add name="CustomMembershipProvider" type="Solution.Models.CustomMembershipProvider" enablePasswordRetrieval="false" maxInvalidPasswordAttempts="3" passwordAttemptWindow="10" applicationName="/"/>
  </providers>
</membership>

问题:我收到了大量的运行时错误,告诉我CustomMembershipProvider does not implement inherited abstract member MembershipProvider.ApplicationName.get / MembershipProvider.ApplicationName.set / MembershipProvider.ChangePassword(string, string, string) etc.

问题:这到底发生了什么?不能CustomMembershipProvider继承MembershipProvider的所有属性和功能而不需要额外的工作吗?我错过了一些简单的东西吗?

我对此做了一些研究,我假设by virtue of this answer问题是Visual Studio会自动填充CustomMembershipProvider中缺少throw new NotImplementedException(); {{1}}的每个属性。然而,这个特定的答案并没有帮助我解决这个问题。

1 个答案:

答案 0 :(得分:1)

我非常确定这些是编译时错误,而不是您看到的运行时错误。

MembershipProvider是一个抽象类,为了创建抽象类的具体实现,您必须为(至少)所有抽象成员提供实现。你的班级只有三个明确的成员(没有一个是实现MembershipProvider的抽象成员),而根据我的统计,MembershipProvider有27个抽象成员,所以你至少有27个成员短。

MSDN有关于如何实现自定义成员资格提供程序的article,它包含以下文本:

  
    

下表列出了必须从ProviderBase和MembershipProvider抽象类实现的必需属性和方法,以及每个属性和方法的说明。要查看每个成员的实现,请参阅为示例成员资格提供程序实现提供的代码。

  

后面是一个非常长的属性和方法表。

除了上面的文章之外,我还建议您阅读abstract classes,因为您似乎并不清楚继承抽象类的内容。

以下是一些有用的文章,其中包含有关使用内置功能在ASP.NET中设置标识的信息(TYPE CAST EXCEPTION博客在ASP.NET标识上有几个不同的帖子)。

Deploy a Secure ASP.NET MVC 5 app with Membership, OAuth, and SQL Database to an Azure Website

Customizing profile information in ASP.NET Identity in VS 2013 templates

TYPE CAST EXCEPTION - ASP.NET MVC and Identity 2.0: Understanding the Basics