1

訪問者グループを作成し、そこにクラスを挿入しようとしています。ブロックに挿入しているサイトでクラスをすべて配線して正常に実行しています。

CMS で訪問者グループ タブを開くと、次の例外が発生します。

StructureMap 例外コード: 202 PluginFamily EPiServer.ServiceLocation.ServiceAccessor`1 に定義されたデフォルト インスタンスがありません]、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 コンテナーがあることだと思います。これは事実ですか?もしそうなら、マッピングが確実に実行されるようにする最善の方法は何ですか?

4

1 に答える 1

1

答えには遅すぎるかもしれません:) 注入されたプロパティでは、もう少しトリッキーです。そのインターフェース実装が作成されるはずの方法を EPiServer に伝える必要があります。ServiceConfigurationこれは属性を使用して行うことができます:

[ServiceConfiguration(Lifecycle = ServiceInstanceScope.Unique, ServiceType = typeof(IMemberFactory))]
public class DefaultMemberFactory : IMemberFactory
{
}
于 2014-04-03T07:51:09.207 に答える