Asp.net web api 如何在内存中托管web api?

Asp.net web api 如何在内存中托管web api?,asp.net-web-api,asp.net-web-api2,Asp.net Web Api,Asp.net Web Api2,我有web api控制器,我想执行集成测试。因此,我按照本文配置了内存中的WebAPI主机。 我的集成测试和web api是同一VS解决方案中的两个不同项目 下面是代码 Web API控制器 public class DocumentController : ApiController { public DocumentController(IDomainService domainService) { _domainService = domainServic

我有web api控制器,我想执行集成测试。因此,我按照本文配置了内存中的WebAPI主机。 我的集成测试和web api是同一VS解决方案中的两个不同项目

下面是代码

Web API控制器

public class DocumentController : ApiController
{

    public DocumentController(IDomainService domainService)
    {
        _domainService = domainService;            
    }        

    [HttpPost]
    public async Task<IEnumerable<string>> Update([FromBody]IEnumerable<Document> request)
    {
        return await _domainService.Update(request).ConfigureAwait(false);
    }
}
我现在没有收到404错误。但是Unity无法解析
DocumentController
。HttpResponse包含错误

尝试创建类型为的控制器时出错 “文档控制器”。确保控制器具有 无参数公共构造函数


TestInitialize
方法中,我正在调用
unityWebPiActivator.Start()
,它用Unity注册所有需要的类型

我通过设置“HttpConfiguration.DependencyResolver”解决了第二个问题

    [TestInitialize]
    public void Init()
    {
        var config = new HttpConfiguration();
        //UnityWebApiActivator.Start();
        config.DependencyResolver = new UnityHierarchicalDependencyResolver(UnityConfig.GetConfiguredContainer());
        WebApiConfig.Register(config);
        config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
        _server = new HttpServer(config);
    }
    [TestInitialize]
    public void Init()
    {
        var config = new HttpConfiguration();
        UnityWebApiActivator.Start();
        WebApiConfig.Register(config);
        config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
        _server = new HttpServer(config);
    }
    [TestInitialize]
    public void Init()
    {
        var config = new HttpConfiguration();
        //UnityWebApiActivator.Start();
        config.DependencyResolver = new UnityHierarchicalDependencyResolver(UnityConfig.GetConfiguredContainer());
        WebApiConfig.Register(config);
        config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
        _server = new HttpServer(config);
    }