我正在尝试make a dynamic sitemap using MvcSiteMapProvider
。
问题是_jobService
为空,我做错了什么?我在其他地方使用IJobService
,因此配置正确,例如
x.For<IJobService>().Use<JobService>();
这是我的代码:
private IJobService _jobService
{
get
{
return DependencyResolver.Current.GetService<IJobService>();
}
}
public override IEnumerable<DynamicNode> GetDynamicNodeCollection()
{
List<JobViewModel> activeJobs = _jobService.GetJobs().ToList();
// Create a node for each job
foreach (var job in activeJobs)
{
var node = new DynamicNode();
node.Title = job.Title;
node.RouteValues.Add("id", job.Id);
yield return node;
}
}
此代码只运行一次,因为我使用它来创建sitemap.xml
,因此它会创建一些节点,然后在动态节点时出错。如果我在错误后刷新页面,我会看到创建的sitemap.xml
(减去动态节点,例如/job/1
,/job/2
)。
答案 0 :(得分:0)
我不确定问题究竟是什么,但我怀疑它与初始化顺序有关 - 也就是说,在运行DI容器配置代码之前构建了站点地图。
这已在MvcSiteMapProvider v4中修复,因为我们现在使用DI来配置整个提供程序并删除了对Microsoft的SiteMapProvider模型的依赖。该提供者模型几乎是MvcSiteMapProvider(缓存,DI,性能,线程,初始化等)的几个问题的根源。