2013-09-25 24 views
1

我想使用自定义成员资格和自定义角色提供程序。我有这个类:在web.config中设置自定义成员身份的代码是否正确

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配置,安全选项卡,但得到这个消息:

有一个问题,您选择的数据存储。这可能是由于无效的服务器名称或凭据,或者权限不足造成的。它也可能是由角色管理器功能未启用引起的。点击下面的按钮将被重定向到您可以选择新数据存储的页面。 以下消息可能有助于诊断问题:方法或操作未实现。

回答

1

此处的问题似乎源自您的connectionStringName属性。

确保你定义/在你的web.config的<connectionStrings>部分添加连接字符串

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

另外,如果你ahve如上面已经添加,然后确保你使用了正确的设置。

首先检查数据库的确切位置?找出哪个SQL Server实例是应用程序使用的数据库。修改连接字符串以指向该实例。

+0

是的。我在web.config中设置了这个连接字符串 –

+1

你确定你在connectionStrings中使用了正确的设置:Data Source,UserName,Password等?也重新编译,重建应用程序并在那之后再次运行 –

+0

我的自定义成员身份正在网站中工作。但是当我转到ASP.NET配置和安全选项卡时,获取消息 –

0

的方法或操作未实现

这是,如果你扔NotImplementedException不带任何参数的消息得到。

最明显的原因是您的一个自定义提供程序尚未实现预期方法之一。如果你能得到堆栈跟踪,你会看到哪一个。

UPDATE回应评论:

  • 方法:

    我的自定义成员在现场

    成员和角色提供包含有两个目的方法工作在运行时需要进行身份验证(MembershipProvider)和授权(RoleProvider)。例如,在运行时,RoleProvider只使用方法IsUserInRoleGetRolesForUser

  • 管理用户(MembershipProvider)和角色/角色成员资格(RoleProvider)所需的方法。如果要使用ASP.NET配置和安全性选项卡管理提供者的数据存储,则需要这些方法。

这是完全有效的创建一个供应商,只提供运行时功能 - 所谓的“只读”提供,在这种情况下,你必须提供一些其他外部机构管理供应商的数据存储。例如,WindowsTokenRoleProvider是只读提供者。但是,如果您这样做,则无法使用ASP.NET配置和安全性选项卡管理提供商商店。

看来你没有实现一个或多个管理方法,而是抛出NotImplementedException

顺便提一句,NotImplementedException不是在只读提供程序中抛出不受支持的方法的最佳例外。它通常只应用于指示尚未在开发版本中实施的方法。

如果您不打算实施该方法,最好扔NotSupportedException--或者在提供者的情况下,或者ProviderException

+0

我的自定义成员身份正在网站中工作。但是当我转到ASP.NET配置和安全选项卡时,获取消息。我的自定义会员资格是问题? –

相关问题