我有一个通过wcf服务访问数据库的web应用程序。这个想法是使用wcf服务从Web应用程序中提取数据。所有这些工作正常,但我也使用内置的角色提供程序使用SqlRoleManager,它直接访问aspnetdb数据库。我想通过在wcf服务中创建一个自定义角色提供程序,然后通过wcf服务访问它来抽象角色提供程序。我可以通过WCF服务创建自定义角色提供者吗?
我已经创建了自定义角色提供程序,它工作正常,但现在我需要将它放在wcf服务中。
因此,在我试图通过WCF服务试图获得此功能之前,我在访问roleprovider类的web应用程序中创建了第二个类,并更改了我的web配置roleprovider参数以使用该类。所以我roleprovider类被称为 “UcfCstRoleProvider” 和我的web.config看起来像这样:
<roleManager
enabled="true"
defaultProvider="UcfCstRoleProvider">
<providers>
<add
name="UcfCstRoleProvider"
type="Ucf.Security.Wcf.WebTests.UcfCstRoleProvider, Ucf.Security.Wcf.WebTests"
connectionStringName="SqlRoleManagerConnection"
applicationName="SMTP" />
</providers>
</roleManager>
我班开始是这样的:
public class UcfCstRoleProvider : RoleProvider
{
private readonly WindowsTokenRoleProvider _roleProxy = new WindowsTokenRoleProvider();
public override string ApplicationName
{
get
{
return _roleProxy.ApplicationName;
}
set
{
_roleProxy.ApplicationName = value;
}
}
正如我所说的,这工作正常。所以第二个类被称为BlRoleProvider,它与roleprovide具有相同的属性和参数,但不实现RoleProvider。我改变web.config中指向此类像这样:
<roleManager
enabled="true"
defaultProvider="BlRoleProvider">
<providers>
<add
name="UcfCstRoleProvider"
type="Ucf.Security.Wcf.WebTests.BlRoleProvider, Ucf.Security.Wcf.WebTests"
connectionStringName="SqlRoleManagerConnection"
applicationName="SMTP" />
</providers>
</roleManager>
但我得到这个错误。 “提供者必须实现类”System.Web.Security.RoleProvider“。”
我希望我已经解释得很清楚,以显示我正在尝试做什么。如果我可以让角色提供者通过同一个应用程序中的另一个类来工作,我相信它可以通过WCF服务工作,但是如何才能通过此错误?
或者我转错了方向,有更好的方法去做我想做的事?