0

我正在创建一个 MVC3 网站,它将使用 WCF Web API 公开一个 REST API。

为了向 REST API 注册路由,我将代码添加到 Global.asax,类似于下面的代码。

routes.MapServiceRoute<RelationsService>("relations");

这工作得很好,但我需要使用 DI 方法来注入服务所依赖的依赖项。正如您在上面的代码中看到的,MVC 框架正在创建 RelationsService 的实例,但这应该由 DI 容器完成。

有谁知道如何配置 MVC3 以便我自己的 DI 容器用于创建服务的实例?

4

1 回答 1

1

您必须使用已使用 IResourceFactory 创建的 IHttpHostConfigurationBuilder 扩展您当前的服务注册调用。

var configurationBuilder = HttpHostConfiguration.Create()
    .SetResourceFactory(new ResourceFactory());

routes.MapServiceRoute<RelationsService>("relations", configurationBuilder);

然后,例如,如果您使用 StructureMap 作为首选 IoC/DI 工具,您可以在 GetInstance 方法中请求服务。

public class ResourceFactory : IResourceFactory
{
    public object GetInstance(Type serviceType, InstanceContext instanceContext, HttpRequestMessage request)
    {
        return ObjectFactory.GetInstance(serviceType);
    }
}
于 2011-07-19T10:46:21.683 回答