0

我有一个电子邮件发送类,当激活项目时,它会生成一个指向仪表板的链接,如下所示,

Item dashboardItem = DatabaseManager.WebDatabase.GetItem"/sitecore/content/Public/Pages/Users/Dashboard"); string url = LinkManager.GetItemUrl(dashboardItem, opt);

URL 生成为http://mysite/Pages/Users/Dashboard,这是预期的行为。这是用户可访问的 URL。

我正在尝试使用计划任务生成相同的电子邮件。但是当它运行并尝试执行如下生成的代码 URL 时,

http://127.0.0.1/sitecore/content/Public/Pages/Users/Dashboard

似乎当我们使用调度程序 LinkManager 时无法识别与项目映射的 URL。如何使用计划任务生成用户可访问的 URL?

4

1 回答 1

5

发生这种情况是因为计划任务在不同的 SiteContext 中运行。

在您的任务代码中,您应该手动切换到包含您要链接到的项目的 SiteContext。

这样:

using (new Sitecore.Sites.SiteContextSwitcher(
         Sitecore.Sites.SiteContext.GetSite("your_site_name")))
{
    // load item & generate url here ...
}

your_site_name是配置中<sites>配置的站点名称。

于 2013-03-05T10:56:52.527 回答