我有一个电子邮件发送类,当激活该项时,它会生成一个指向仪表板的链接,如下所示,
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?
答案 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>
配置中配置的站点名称。