9

我按照此处的说明将 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

所以我在结构映射配置上遗漏了一些东西:

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

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

4

3 回答 3

9

在结构图 3.x 中,我在注册表中成功使用了以下内容:

For<HelpController>().Use( ctx => new HelpController() );
于 2015-02-24T16:48:38.793 回答
6

我也有同样的问题。我发现问题在于 HelpController 中有两个构造函数。一个采用 HttpConfiguration,另一个采用 GlobalConfiguration。我强制 StructureMap 通过将 Http 构造函数设为私有来调用 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 回答