我想通过以下设置来装饰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服务有什么不同?
答案 0 :(得分:2)
docs州:
标准的Autofac服务托管几乎适用于所有情况,但如果您在WCF服务实现上使用装饰器,则需要使用多租户WCF服务托管机制而不是标准的Autofac服务主机。