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 に答える