使用Autofac装饰WCF服务

时间:2018-02-27 12:11:56

标签: wcf dependency-injection autofac decorator

我想通过以下设置来装饰WCF服务:

SVC定义

<%@ ServiceHost Language="C#" Debug="true" 
    Service="Foo.IBarService, Foo"
    Factory="Autofac.Integration.Wcf.AutofacServiceHostFactory, Autofac.Integration.Wcf"%>

Autofac注册

builder.RegisterType<FooService>().Named<IFooService>("fooservice");

builder.RegisterType<LogFooService>().Named<IFooService>("logfooservice");

builder
    .RegisterDecorator<IFooService>(
        (context, inner) => context.ResolveNamed<IFooService>("logfooservice", TypedParameter.From(inner)),
        fromKey: "fooservice")
    .As<IFooService>();

当装饰器不是服务本身时,这种方法确实有效。例如,在构造函数中具有装饰IW的具体服务。与svc服务有什么不同?

1 个答案:

答案 0 :(得分:2)

docs州:

  

标准的Autofac服务托管几乎适用于所有情况,但如果您在WCF服务实现上使用装饰器,则需要使用多租户WCF服务托管机制而不是标准的Autofac服务主机。