c# - Ninject - 创建自定义 NinjectWebServiceHost

标签 c# .net wcf web-services ninject

我的 WCF 项目中有几个 Web 服务需要自定义 ServiceAuthorizationManager 才能对 OAuth 调用进行身份验证。为此,我创建了一个自定义 WebServiceHostFactory。我正在连接 Ninject,很难将其转换为 NinjectWebServiceHostFactory。这是我的代码:

public class MyServiceHostFactory : WebServiceHostFactory
{
    protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
    {
        return new MyServiceHost(serviceType, baseAddresses);
    }
}

public class MyServiceHost: WebServiceHost
{
    public MyServiceHost(Type serviceType, Uri[] baseAddresses)
        : base(serviceType, baseAddresses)
    {
        Authorization.ServiceAuthorizationManager = new OAuthAuthorizationManager();
    }
}

当我将 WebServiceHost 切换到 NinjectWebServiceHost 时,它会请求 IServiceBehavior 实现。我的 Web 服务上有一个 ServiceBehavior 属性,我的 web.config 中有一个 ServiceBehavior 部分。

有没有人见过这个并且能够成功地实现这样的东西?有没有更好的途径为我的 2 个网络服务连接起来?我不希望这影响我所有的网络服务。

最佳答案

我们前几天刚做过这个。我们发现更容易实现一种新型的 NinjectWebServiceHostFactory,它为我们连接了自定义 AuthorizationManager。

public class OAuthHostFactory : NinjectWebServiceHostFactory
{
    protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
    {
        var host = base.CreateServiceHost(serviceType, baseAddresses);
        host.Authorization.ServiceAuthorizationManager = new OAuthAuthorizationManager();
        return host;
    }
}

这使我们可以灵活地挑选和选择我们想要在哪些路由或 svc 上实现这个特定的工厂。

关于c# - Ninject - 创建自定义 NinjectWebServiceHost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11472883/

相关文章:

c# - 如何用基类初始化继承类?

c# - 使用 .NET AES-Encrypt-then-MAC 大文件

c# - 配置 IIS 7.0 元数据库问题

wcf - 如果没有本地计算机上的服务器证书,客户端 WCF 无法连接到服务器 WCF

.net - 找不到配置绑定(bind)扩展

c# - 确定 winforms 应用程序中像素的颜色

C# 使用 XPATH 选择具有已知值的特定元素,然后删除

javascript - knockout 组列表为带有对象的更小列表

c# - 为什么我的 wpf 应用程序在 Web 浏览器中启动?

c# - 使用 XElement 追加 XML