【问题标题】:DefaultMembershipProvider => Object reference not set to an instance of an objectDefaultMembershipProvider => 对象引用未设置为对象的实例
【发布时间】:2012-06-15 07:54:29
【问题描述】:

我在尝试实例化新的 DefaultMembershipProvider (system.web.providers) 时遇到了问题。

DefaultMembershipProvider _provider = new DefaultMembershipProvider();

在此之后,我假设设置是从 web.config 加载的,但事实并非如此。例如 minRequiredPasswordLength 保持为 0。

这是我的会员设置:

<membership>
    <providers>
        <add applicationName="/"
             connectionStringName="MyDB"
             enablePasswordRetrieval="false"
             enablePasswordReset="true"
             maxInvalidPasswordAttempts="5"
             minRequiredPasswordLength="6"
             minRequiredNonalphanumericCharacters="0"
             passwordAttemptWindow="10"
             requiresQuestionAndAnswer="false"
             requiresUniqueEmail="false" 
             name="DefaultMembershipProvider"
             type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </providers>
</membership>

我可以通过 asp.net 配置工具毫无问题地创建新用户,所以我的数据库连接似乎没问题。

有什么想法吗?

【问题讨论】:

  • 为什么你要自己实例化 DefaultMembershipProvider?有什么原因吗?
  • 我必须承认我对它很陌生。我只是看不到任何其他方法可以使用它提供的方法......
  • 我应该只使用 system.web.security.Membership 类吗?
  • 您不需要自己实例化该类。除非您尝试做一些特别的事情,否则您只需在 web.config 中配置内容,框架将负责通过填充 web.config 中的值来实例化该类。

标签: asp.net asp.net-mvc-3 asp.net-membership asp.net-mvc-4 membership-provider


【解决方案1】:

无需自己实例化它。您应该能够直接访问Membership class 的静态属性和方法(您会注意到它们中的大多数都是静态的)。

例如,这将为您提供您配置的最小密码长度:

int minPassLength = System.Web.Security.Membership.MinRequiredPasswordLength;

您可以使用静态方法做许多其他方便的事情,例如获取所有用户(使用 GetAllUsers method)或更新特定用户信息(使用 UpdateUser method)。

另外,我相信您应该将会员设置中的type 设置为

type="System.Web.Security.MembershipProvider"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 2013-10-28
    相关资源
    最近更新 更多