【问题标题】:Ninject and WCF ServiceAuthorizationManagerNinject 和 WCF ServiceAuthorizationManager
【发布时间】:2012-05-29 21:12:04
【问题描述】:

有谁知道如何将存储库注入 WCF 服务中的 ServiceAuthorizationManager 子类型?

我正在创建一个扩展 ServiceAuthorizationManager 的类,并在我的存储库中调用一个方法以从数据库中获取数据,我希望 Ninject 将存储库注入到构造函数中。

但是,WCF 需要默认的无参数构造函数才能使用 ServiceAuthorizationManager 子类型。

有什么帮助吗?

【问题讨论】:

    标签: wcf dependency-injection ninject ioc-container wcf-security


    【解决方案1】:

    嘿, 对于这种情况,您可以使用属性注入。只需将您的存储库声明为具有类似于以下伪代码的注入属性的属性:

        public class MyServiceAuthorizationManager : ServiceAuthorizationManager
        {
             [Inject]
             IYourRepo Repository { get; set; }
        }
    

    然后您可以正常解析您的自定义 ServiceAuthorizationManager

    【讨论】:

    • 当我这样做时,该属性始终为空。我不确定何时在 WCF 管道中调用 ServiceAuthorizationManager,但似乎它并没有获取 Ninject Kernel 以解析我的属性。有什么想法吗?
    • 如果我调用 Ninject.Web.Common.Bootsrapper().Kernel.Get(),我能够正确解析和使用该对象。不喜欢这个解决方案,因为我有新的引导程序。
    • 顺便说一句,我实例化引导程序并在 ServiceAuthorizationManager.CheckAccess(OperationContext) 的覆盖中解析我的仓库
    • 是的,我有以下服务行为配置:
    • 这个有运气吗?我也面临同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多