2011-07-13 90 views
1

我正在构建WCF 4.0 REST服务并希望使用Autofac作为DI容器。显然,我希望能够调用服务类(服务契约实现)的参数化构造函数,该函数接受一系列要使用的接口。这些接口将在Autofac容器中注册,我希望它们在创建服务类的实例时解析和使用(而不是调用未参数化的构造函数,这是默认的)。Autofac + WCF REST 4.0

MVC控制器存在类似的问题,这是由Autofac MVC集成包解决。有没有什么可以使用WCF REST 4.0?如果不是,解决我的问题的最佳方法是什么?例如,有没有什么像MVC的DependencyResolver,我可以设置使用Autofac?

请注意,从4.0开始,他们改变了WCF REST中的一些概念。例如,现在没有.svc文件,路由就足以调用所需的方法。我对WCF REST 4.0很新,所以我想在社区花费数天时间来实施一些巨大的定制机制之前,向社区提出建议。唉,通过互联网快速搜索并没有给我提供一个可接受的解决方案。

回答

2

在您的全球应用程序的启动:

//Build a container with your service registered. 
var builder = new ContainerBuilder(); 
builder.RegisterType<YourService>(); 
var container = builder.Build(); 

//Set AutofacHostFactory.Container with this built container. 
AutofacHostFactory.Container = container; 

//Use AutofacWebServiceHostFactory instead of WebServiceHostFactory 
var factory = new AutofacWebServiceHostFactory(); 

//Add your routes 
RouteTable.Routes.Add(new ServiceRoute("YourServiceUrl", factory, typeof(YourService))); 

这就是全部。

0

你看过the existing WCF integration支持吗?

+0

是的,恐怕情况有点不一样。不过,我会试一试。 –

+0

接受我用于其他需求,所以答案很有用 –