将 WebApi.HelpPage 添加到 webApi 项目后的 StructureMap 异常
本文关键字:StructureMap 异常 项目 webApi WebApi HelpPage 添加 | 更新日期: 2023-09-27 18:37:25
我按照此处的说明将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();
}));
任何人都可以指出结构图新手的正确方向吗?
在结构图 3.x 中,我在注册表中成功使用了以下内容:
For<HelpController>().Use( ctx => new HelpController() );
我也有同样的问题。我发现的问题是帮助控制器中有两个构造函数。一个采用 HttpConfiguration,另一个采用全局配置。 我强制 StructureMap 通过使 Http 构造函数私有来调用 GlobalConfiguration constuctor。
public HelpController()
: this(GlobalConfiguration.Configuration)
{
}
private HelpController(HttpConfiguration config)
{
Configuration = config;
}
这似乎起到了作用。
确保从装配扫描仪中跳过 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上发表了评论。我希望将来不需要我们这样做,但就目前而言,这是一个快速解决方案。