Sitecore - 使用代理构建URL

Dha*_*777 0 asp.net sitecore sitecore6

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

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?

Ruu*_*ier 5

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

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

这样:

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

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