我已经创建了一个访问者组,并且正在尝试将一个类注入其中。我将所有类都连接起来并在我将其注入块的站点中运行良好。
当我在 CMS 中打开访客组选项卡时,出现以下异常:
StructureMap 异常代码:202 没有为 PluginFamily EPiServer.ServiceLocation.ServiceAccessor`1 定义默认实例 [[Bennetts.Site.Community.Membership.IMemberFactory,Bennetts.Site.Community,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null] ],EPiServer.Framework,版本=7.0.859.16,文化=中性,PublicKeyToken=8fe83dea738b45b7
站点 DependencyResolverInitialization 模块中的代码是:
public void ConfigureContainer(ServiceConfigurationContext context)
{
.......
context.Container.Configure(x =>
{
x.For<IMemberFactory>()
.Use<MemberFactory>()
.Ctor<string>("serviceHostname")
.Is(i => i.GetInstance<IConfigurationSettings>().GetExternalCmsServiceHostname())
.Ctor<int>("ServicePort")
.Is(i => i.GetInstance<IConfigurationSettings>().GetExternalCmsServicePort());
});
}
标准是:
public class IsMemberCriterion : CriterionBase<IsMemberCriterionSettings>
{
public Injected<IMemberFactory> MemberFactory { get; set; }
public override bool IsMatch(IPrincipal principal, HttpContextBase httpContext)
{
return MemberFactory.Service.GetMember(principal.Identity.Name) != null;
}
}
我怀疑问题是模块区域有自己的 StructureMap 容器。是这样吗?如果是这样,确保您的映射得到执行的最佳方法是什么?