Sitecore - 使用代理构建URL

时间:2013-03-05 10:09:18

标签: asp.net sitecore sitecore6

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:5)

这是因为计划任务在不同的SiteContext中运行。

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

以这种方式:

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

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