DynamicNodeProviderBase中的MvcSiteMapProvider和StructureMap?

时间:2012-11-15 19:39:29

标签: c# dependency-injection structuremap mvcsitemapprovider

我正在尝试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)。

1 个答案:

答案 0 :(得分:0)

我不确定问题究竟是什么,但我怀疑它与初始化顺序有关 - 也就是说,在运行DI容器配置代码之前构建了站点地图。

这已在MvcSiteMapProvider v4中修复,因为我们现在使用DI来配置整个提供程序并删除了对Microsoft的SiteMapProvider模型的依赖。该提供者模型几乎是MvcSiteMapProvider(缓存,DI,性能,线程,初始化等)的几个问题的根源。