【发布时间】:2014-12-11 16:54:35
【问题描述】:
我很难弄清楚如何在 MvcSiteMapProvider 中使用 Autofac 注册自定义 ISiteMapNodeVisibilityProvider (SiteMapNodeVisibilityProviderBase)。
在我将可见性提供程序移至另一个程序集之前,一切都运行良好。现在,无论我尝试什么,我总是得到 p>
找不到名为“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 Site Map Provider - SiteMapPath Performance Very Slow?
所以我现在卡住了。我不是 Autofac 或 MvcSiteMap 提供程序的向导,但是,就像我说的,在我将可见性提供程序移动到另一个程序集之前,一切正常。
非常感谢您的时间和关注!在这一点上我很沮丧。
【问题讨论】:
标签: asp.net-mvc autofac mvcsitemapprovider asp.net-mvc-sitemap