1

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

4

1 回答 1

0

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

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

于 2013-08-18T22:26:31.813 回答