9

にWebApi.HelpPageを追加した後、私はのStructureMapを使用して既存のプロジェクトにwebApi.HelpPageエリアやビューを追加するには、ここ指示に従った - しかし、/ヘルプのURLにアクセスするとき:のStructureMap例外はWEBAPIプロジェクト

StructureMap Exception Code: 202 No Default Instance defined for PluginFamily System.Web.Http.HttpRouteCollection, System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 

だから私はのStructureMapののconfigureに何かが欠けている:

ObjectFactory.Configure(x => x.Scan(scan => 
      { 
       scan.TheCallingAssembly(); 
       scan.AssembliesFromApplicationBaseDirectory(); 
       scan.AddAllTypesOf<IHttpModule>(); 
       scan.WithDefaultConventions(); 
      })); 

誰もが正しい方向にのStructureMapの初心者を指しますか?

+0

このバグはgithubの上であまりにも開発者をstuctureMapことが報告されている - hoepfully彼らは修正して更新します: ます。https:// github.com/webadvanced/Structuremap.MVC4/issues/6 – nathfy

答えて

8

For<HelpController>().Use(ctx => new HelpController()); 
+0

これはありがたいことです - 私たちはapiのドキュメントとテストのためにhttp://swagger.io/を使用していますが、他の人に役立つことを願っています。 – nathfy

+0

ありがとう、StructureMapの初心者であり、 –

4

アセンブリスキャナーからSystem.Web。*アセンブリをスキップしてください。

ObjectFactory.Configure(x => x.Scan(scan => 
    { 
     scan.TheCallingAssembly(); 
     scan.AssembliesFromApplicationBaseDirectory(assembly => !assembly.FullName.StartsWith("System.Web")); 
     scan.AddAllTypesOf<IHttpModule>(); 
     scan.WithDefaultConventions(); 
    })); 

これはバグであり、私たちは両方ともStructureMapのGithubにコメントしました。私はこれが将来必要ではないことを願っていますが、今はクイックフィックスです。

+0

これは魅力的だった。私が持っている唯一の提案は、除外されたアセンブリを別の呼び出しで分離することです(多数のアセンブリが除外されている場合に備えて) - scan.ExcludeNamespace( "System.Web"); – mirezus

+0

これは私にとってはまったく機能しません。 Seeking27の提案を使う必要があります。 – Echiban

+1

これは、基本アセンブリ名を持つMVC 4 Webアプリケーションのためのものです。別のもの(MVC 5またはMVC 6)を使用している場合は、微粉砕が異なる場合があります。 –

6

私も同じ問題がありました。私が問題であることが判明したのは、HelpControllerに2つのコンストラクタがあることでした。 1つはHttpConfigurationをとり、もう1つはGlobalConfigurationをとります。私は、Httpコンストラクタをprivateにすることによって、StructureMapにGlobalConfigurationコンストラクタを呼び出させました。

public HelpController() 
     : this(GlobalConfiguration.Configuration) 
    { 
    } 

    private HelpController(HttpConfiguration config) 
    { 
     Configuration = config; 
    } 

これはやっているようでした。私は成功を収めて、私のレジストリに次のように使用するのStructureMap 3.xでは

関連する問題