9

ここの指示に従って、structureMap を使用する既存のプロジェクトに webApi.HelpPage 領域とビューを追加しましたが、/Help URL にアクセスする場合:

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

だから私は構造マップの設定に何かが欠けています:

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

誰もが構造マップの初心者を正しい方向に向けることができますか?

4

3 に答える 3

6

私も同じ問題を抱えていました。問題であることがわかったのは、HelpController に 2 つのコンストラクターがあることです。1 つは HttpConfiguration を受け取り、もう 1 つは GlobalConfiguration を受け取ります。Http コンストラクターを非公開にすることで、StructureMap に GlobalConfiguration コンストラクターを呼び出させるようにしました。

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

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

それはトリックを行うように見えました。

于 2014-04-28T13:39:43.263 に答える
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 にコメントしました。将来これが必要にならないことを願っていますが、今のところはクイックフィックスです。

于 2013-11-05T18:02:58.547 に答える