c# - 我可以通过 WCF 服务创建自定义角色提供者吗?

标签 c# .net asp.net wcf web-services

我有一个通过 wcf 服务访问数据库的 Web 应用程序。这个想法是使用 wcf 服务从 web 应用程序中抽象数据。一切正常,但我也使用内置的角色提供者使用 SqlRoleManager 直接访问 aspnetdb 数据库。我想通过在 wcf 服务中创建自定义角色提供者然后通过 wcf 服务访问它来抽象角色提供者。

我已经创建了自定义角色提供程序,它工作正常,但现在我需要将它放在 wcf 服务中。

因此,在我一头扎进尝试通过 WCF 服务让它工作之前,我在 Web 应用程序中创建了第二个类来访问角色提供程序类并更改我的 Web 配置角色提供程序参数以使用该类。所以我的角色提供者类称为“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,它具有与角色提供者相同的属性和参数,但不实现 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 服务工作,但我如何克服这个错误?

或者也许我走错了路,有更好的方法来做我想做的事??

最佳答案

我认为最好的办法是创建一个自定义角色提供程序并实现每个方法。在每个方法的实现中,调用WCF服务进行数据访问。例如:

public class WcfRoleProvider: RoleProvider
{
    public bool IsUserInRole(string username, roleName)
    {
        bool result = false;
        using(WcfRoleService roleService = new WcfRoleService())
        {
            result = roleService.IsUserInRole(username, roleName);
        }

        return result;
     }
}

关于c# - 我可以通过 WCF 服务创建自定义角色提供者吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2850374/

相关文章:

c# - 使用 ScreenCapture.CaptureScreenshot 捕获并保存屏幕截图

c# - 从数据库中休眠随机数据

.net - wpf listview拖动选择多个项目

c# - SvcUtil.exe 与添加引用

html - 当元素被禁用时触发 onmouseover 事件

c# - 如何在Unity中制作登录窗口

c# - WPF 和触摸 - 焦点问题

c# - 如何使用 System.Random 获得高质量的归一化带符号随机 float ?

asp.net - 如何删除电子商务交易?

c# - 将字典从 Ajax 传递到 C# 代码隐藏