2

新しい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構成ツールを使用して問題なく新しいユーザーを作成できるため、データベース接続は問題ないようです。

何か案は?

4

1 に答える 1

1

自分でインスタンス化する必要はありません。Membershipクラスの静的プロパティとメソッドに直接アクセスできるはずです(それらのほとんどが静的であることに気付くでしょう)。

たとえば、これにより、構成した最低限必要なパスワードの長さがわかります。

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

静的メソッドを使用すると、他にも多くの便利なことができます。たとえば、すべてのユーザーを取得する(GetAllUsersメソッドを使用する)、特定のユーザー情報を更新する(UpdateUserメソッドを使用する)などです。

typeまた、メンバーシップ設定でを設定する必要があると思います

type="System.Web.Security.MembershipProvider"
于 2012-06-12T13:57:57.550 に答える