1

我正在尝试让 StructureMap 3 与在 OWIN 中自托管的 WebAPI 2 一起使用。有没有人成功地让这个工作?

我从 Nuget 安装了 StructureMap 3、WebAPI 2.2、Owin Self Host 和 StructureMap.WebApi2。然后在WebApi服务启动类中,我添加了以下内容:

public class WebApiServiceStartup
{
    public void Configuration(IAppBuilder appBuilder)
    {
        var config = new HttpConfiguration();

        config.MapHttpAttributeRoutes();

        var container = IoC.Initialize();

        config.DependencyResolver = new StructureMapWebApiDependencyResolver(container);

        appBuilder.UseWebApi(config);
    }
}

但是,当应用程序启动时,当应用程序遇到上面代码示例中的最后一行代码时,我收到以下异常:

Exception: Activation error occurred while trying to get instance of type HostBufferPolicySelector, key ""
Inner Exception: Value cannot be null. Parameter name: httpContext

此外,由于 StructureMap.WebApi2 nuget 包创建了一个 App_Start 文件夹,其中包含通常在应用程序启动期间在 IIS 托管的 WebApi 应用程序中运行的代码,我还尝试将此代码复制/粘贴到启动类的 Configuration 方法中还有:

var dependencyScope = new StructureMapDependencyScope(container);

DependencyResolver.SetResolver(dependencyScope);

DynamicModuleUtility.RegisterModule(typeof(StructureMapScopeModule));

GlobalConfiguration.Configuration.DependencyResolver = new StructureMapWebApiDependencyResolver(container);

不幸的是,即使有这个额外的代码,我仍然会收到同样的错误。

我过去没有遇到过让 StructureMap 2 与 WebAPI 2 和 OWIN 一起工作的问题,所以我不确定 StructureMap 3 中发生了什么变化会导致这个问题。

4

0 回答 0