Autofac + WCF REST 4.0

Posted

技术标签:

【中文标题】Autofac + WCF REST 4.0【英文标题】: 【发布时间】:2011-10-04 13:29:18 【问题描述】:

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

MVC 控制器也有类似的问题,Autofac MVC 集成包解决了这个问题。是否有任何可用于 WCF REST 4.0 的东西?如果不是,解决我的问题的最佳方法是什么?例如,有没有像 MVC 的 DependencyResolver 之类的东西,我可以设置它来使用 Autofac?

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

【问题讨论】:

【参考方案1】:

在您的全局应用程序启动中:

//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)));

就是这样。

【讨论】:

【参考方案2】:

你看过the existing WCF integration支持吗?

【讨论】:

是的,恐怕情况有点不同。不过,我会试一试。 接受,因为我将它用于其他需求,所以答案还是有用的

以上是关于Autofac + WCF REST 4.0的主要内容,如果未能解决你的问题,请参考以下文章

WCF 4.0 REST 用户名密码认证

WCF 4.0 - 使用 REST 服务模板返回 JSON WebFaultException

如何在 WCF 4.0 REST 服务上启用基本身份验证?

公开 WCF 4.0 Rest 模板服务的元数据

如何使用 .Net 4.0 REST WCF 服务?

保护 WebServer 和 ApplicationServer 之间的内部 WCF 4.0 REST 服务的最简单方法是啥?