1

MvcSiteMapProvider で Autofac を使用してカスタム ISiteMapNodeVisibilityProvider (SiteMapNodeVisibilityProviderBase) を登録する方法を理解するのに最も苦労しています。

可視性プロバイダーを別のアセンブリに移動するまで、すべてが正常に機能していました。今、私が何をしようとしても、私はいつも得ます

「MyWasWorkingVisibilityProvider、MyNewAssembly」という名前の可視性プロバイダー インスタンスが見つかりませんでした。DI 構成を調べて、この名前の可視性プロバイダー インスタンスが存在し、正しく構成されていることを確認してください。

ドキュメンテーションとコードによると、MvcSiteMapProviderどうにかして...に入る必要があるようSiteMapNodeVisibilityProviderStrategyです...そして、以下でそれを行ったと思います...しかし、私はAutofac忍者ではありません。

ではMvcSiteMapProviderModule.cs、考えられるすべての場所に新しいアセンブリを追加しました...

string[] includeAssembliesForScan = new string[] { "MyOldAssembly", "MyNewAssembly" };

var allAssemblies = new Assembly[] { currentAssembly, siteMapProviderAssembly, typeof(MyWasWorkingVisibilityProvider).Assembly };

builder.RegisterType<SiteMapNodeVisibilityProviderStrategy>()
    .As<ISiteMapNodeVisibilityProviderStrategy>()
    .WithParameters(new List<Parameter> { new NamedParameter("defaultProviderName", string.Empty), new NamedParameter("siteMapNodeVisibilityProviders", new [] { new MyWasWorkingVisibilityProvider() }) });


builder.RegisterType<MyWasWorkingVisibilityProvider>()
    .As<ISiteMapNodeVisibilityProvider>();

しかし、それでもうまくいきません。

価値があるのは、特定のメニュー項目の可視性プロバイダーがデータベースで構成され、メニュー構造全体が、可視性プロバイダーを移動した場所と同じアセンブリにある動的ノード プロバイダーで読み込まれることです。動的ノード プロバイダーは、可視性プロバイダーを読み込もうとしているところまで到達しているため、明らかに機能しています。

https://github.com/maartenba/MvcSiteMapProvider/issues/237が役に立ちそうだと思ったのですが、可視性プロバイダー固有のコードをコンパイルすることができませんでした..

効果がなかった別の例: MVC サイト マップ プロバイダー - SiteMapPath のパフォーマンスが非常に遅い?

だから私は今立ち往生しています。私は Autofac または MvcSiteMap プロバイダーのウィザードではありませんが、前述のように、可視性プロバイダーを別のアセンブリに移動するまで、すべてが正常に機能していました。

あなたの時間と注意をありがとう!この時点で私はイライラしています。

4

1 に答える 1