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 パッケージは、アプリケーションの起動時に IIS でホストされる WebApi アプリケーションで通常実行されるコードを含む App_Start フォルダーを作成するため、このコードをスタートアップ クラスの Configuration メソッドにコピー/貼り付けることも試みました。同じように:

var dependencyScope = new StructureMapDependencyScope(container);

DependencyResolver.SetResolver(dependencyScope);

DynamicModuleUtility.RegisterModule(typeof(StructureMapScopeModule));

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

残念ながら、この追加コードを使用しても、同じエラーが発生します。

過去に StructureMap 2 を WebAPI 2 および OWIN で動作させる際に問題が発生したことはありません。

4

0 に答える 0