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 プロバイダーのウィザードではありませんが、前述のように、可視性プロバイダーを別のアセンブリに移動するまで、すべてが正常に機能していました。
あなたの時間と注意をありがとう!この時点で私はイライラしています。