我已在Sharepoint 2010上实施了FBA(基于声明的身份验证)。以下内容已实施。
但现在代码抛出异常说“函数未实现”。我想知道;我没有使用任何我必须创建自定义成员资格提供程序的自定义数据库。那我为什么会收到这个错误。如果有人有任何线索或遇到类似问题,请告诉我。谢谢。
问候,
稻谷
答案 0 :(得分:1)
为SharePoint 2010配置FBA时,web.config
文件中定义了两个成员资格提供程序 - Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider
(通常名为 i )和System.Web.Security.SqlMembershipProvider
(已命名) FBAMembership 在这种情况下)。默认成员资格提供程序必须设置为前者(即SharePoint声明一个)才能使FBA身份验证正常工作。
执行包含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.");