web.config
FBAがSharePoint2010用に構成されている場合、ファイルには2つのメンバーシッププロバイダーMicrosoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider
(通常はiという名前)とSystem.Web.Security.SqlMembershipProvider
(この場合はFBAMembershipという名前)が定義されています。FBA認証が正しく機能するには、デフォルトのメンバーシッププロバイダーを前者に設定する必要があります(つまり、SharePointが1つを要求します)。
を含む行Membership.GetUserNameByEmail(...)
が実行されると、デフォルトのメンバーシッププロバイダーが使用され、その結果SPClaimsAuthMembershipProvider.GetUserNameByEmail
が呼び出されます。MSDNによると、このメソッドは内部使用のために予約されており、コードから直接使用することを意図したものではなく、コミュニティコンテンツセクションのコメントによると、スローされNotImplementedException
ます。
SqlMembershipProvider
コレクションからプロバイダーのインスタンスを取得してから、このインスタンスを使用してメソッドをMembership.Providers
呼び出す必要があります。GetUserNameByEmail
web.config
ファイルでプロバイダーを構成し、次のようにプロバイダーを取得するときにプレフィックスを使用します。
string applicationNamePrefix = "fbaProvider_";
MembershipProvider fbaProvider;
foreach (MembershipProvider provider in Membership.Providers)
{
if (provider.ApplicationName.StartsWith(applicationNamePrefix, StringComparison.InvariantCultureIgnoreCase))
{
fbaProvider = provider;
}
}
throw new InvalidOperationException("Appropriate provider was not found.");