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 で動作させる際に問題が発生したことはありません。