我在试着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)。
发布于 2013-08-19 06:26:32
我不确定到底是什么问题,但我怀疑它与初始化顺序有关-即在运行DI容器配置代码之前构建站点地图。
这已经在MvcSiteMapProvider v4中修复了,因为我们现在使用DI来配置整个提供程序,并且已经删除了对微软的SiteMapProvider模型的依赖。该提供程序模型几乎是MvcSiteMapProvider所有问题(缓存、DI、性能、线程、初始化等)的根源。
https://stackoverflow.com/questions/13404855
复制相似问题