将WebApi.HelpPage添加到webApi项目后的StructureMap异常

nat*_*hfy 9 c# structuremap asp.net-mvc-4 asp.net-web-api asp.net-web-api-helppages

我按照这里的说明将webApi.HelpPage区域和视图添加到现有项目,该项目使用structureMap - 但是在访问/ 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
Run Code Online (Sandbox Code Playgroud)

所以我在structureMap配置上遗漏了一些东西:

ObjectFactory.Configure(x => x.Scan(scan =>
            {
                scan.TheCallingAssembly();
                scan.AssembliesFromApplicationBaseDirectory();
                scan.AddAllTypesOf<IHttpModule>();
                scan.WithDefaultConventions();
            }));
Run Code Online (Sandbox Code Playgroud)

任何人都可以指向一个structureMap新手正确的方向吗?

小智 9

在structuremap 3.x中,我在我的注册表中使用了以下内容,并取得了成功:

For<HelpController>().Use( ctx => new HelpController() );
Run Code Online (Sandbox Code Playgroud)


see*_*g27 6

我也有同样的问题.我发现的问题是HelpController中有两个构造函数.一个采用HttpConfiguration,另一个采用GlobalConfiguration.我强迫StructureMap通过将Http构造函数设为私有来调用GlobalConfiguration构造函数.

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

    private HelpController(HttpConfiguration config)
    {
        Configuration = config;
    }
Run Code Online (Sandbox Code Playgroud)

这似乎成功了.