1

カスタム メンバーシップとカスタム ロール プロバイダーを使用したい。私はこのクラスを持っています:

public class CustomRoleProvider : RoleProvider
{
//override methods
}

public class CustomMembershipProvider : MembershipProvider
{
//override methods
}

web.config を設定したいのですが、このコードは正しいですか?

<membership defaultProvider="CustomMembershipProvider">
  <providers>
    <clear />
    <add name="CustomMembershipProvider" type="Login1.Code.CustomMembershipProvider, Login1, Version=1.0.0.0, Culture=neutral" connectionStringName="LoginDB1Entities" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>

<roleManager enabled="true" defaultProvider="CustomRoleProvider">
  <providers>
    <clear />
    <add name="CustomRoleProvider" type="Login1.Code.CustomRoleProvider" connectionStringName="LoginDB1Entities" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" writeExceptionsToEventLog="false" />
  </providers>
</roleManager>

ASP.NET の [構成] タブと [セキュリティ] タブに移動すると、次のメッセージが表示されるためです。

選択したデータ ストアに問題があります。これは、サーバー名または資格情報が無効であるか、権限が不十分であることが原因である可能性があります。また、ロール マネージャー機能が有効になっていないことが原因である可能性もあります。下のボタンをクリックすると、新しいデータ ストアを選択できるページにリダイレクトされます。次のメッセージは、問題の診断に役立つ場合があります: メソッドまたは操作が実装されていません。

4

2 に答える 2

1

connectionStringNameここでの問題は、あなたの財産に起因しているようです。

<connectionStrings> Web.configのセクションで接続文字列を定義/追加してください

<connectionStrings> 
<add name="LoginDB1Entities" ... />
</connectionStrings>

また、上記のようにすでに追加している場合は、正しい設定を使用していることを確認してください。

最初に、データベースが正確にどこにあるかを確認しますか? SQL Server のどのインスタンスがアプリケーションのデータベースであるかを調べます。そのインスタンスを指すように接続文字列を変更します。

于 2013-09-26T06:32:36.263 に答える
0

メソッドまたは操作が実装されていません

NotImplementedExceptionこれは、引数なしでスローした場合に取得されるメッセージです。

最も明白な理由は、カスタム プロバイダーの 1 つが期待されるメソッドの 1 つを実装していないことです。スタック トレースを取得できれば、どのスタック トレースかがわかります。

コメントに応じて更新:

カスタム メンバーシップがサイトで機能している

メンバーシップ プロバイダーとロール プロバイダーには、次の 2 つの目的のためのメソッドが含まれています。

  • 実行時に認証 (MembershipProvider) と承認 (RoleProvider) に必要なメソッド。たとえば、実行時に RoleProvider はメソッドIsUserInRoleとのみを使用しますGetRolesForUser

  • ユーザー (MembershipProvider) およびロール/ロール メンバーシップ (RoleProvider) を管理するために必要なメソッド。これらのメソッドは、ASP.NET の [構成とセキュリティ] タブを使用してプロバイダーのデータ ストアを管理する場合に必要です。

ランタイム機能のみを提供するプロバイダー (いわゆる「読み取り専用」プロバイダー) を作成することは完全に有効です。この場合、プロバイダーのデータ ストアを管理するための他の外部メカニズムを提供する必要があります。たとえば、WindowsTokenRoleProviderは読み取り専用プロバイダーです。ただし、これを行うと、[ASP.NET の構成とセキュリティ] タブを使用してプロバイダー ストアを管理できなくなります。

1 つ以上の管理メソッドの実装に失敗したようで、代わりにNotImplementedException.

ちなみに、NotImplementedException読み取り専用プロバイダーでサポートされていないメソッドに対してスローするのは、最善の例外ではありません。通常は、メソッドがまだ開発中のバージョンに実装されていないことを示すためにのみ使用されます。

メソッドを実装するつもりがない場合は、スローすることをお勧めします。NotSupportedExceptionプロバイダーの場合は、おそらくProviderExceptionをスローします。

于 2013-09-26T06:48:14.300 に答える