当我在 ECM 中 select 一条消息时,Sitecore 注销

Sitecore logs out when I select a message in ECM

每当我在 ECM 中 select 一条消息时,它会将我重定向到 Sitecore 的登录页面,顶部有以下 URL

http://example.com/sitecore%20modules/shell/EmailCampaign/UI/Dialogs/MessageBody.aspx?message={79D6412B-824A-4349-8B94-9136D17C6E84}&lang=en&contact=Emailcampaign\exampleuser_at_example_dot_com

以下是我对这个问题的了解:

  1. 虽然这种情况经常发生,但有时它会适用于相同的消息和相同的预览用户(对于上面 URL 中提到的联系人)。
  2. 试图访问 ECM 中消息的 sitecore 用户拥有他试图访问的消息的所有访问权限。
  3. 我在另一台服务器上有一个测试环境 运行,它工作正常。但是在生产环境中是不行的。
  4. 我 运行 我的网站 Sitecore.NET 6.6.0(修订版 121015)版本。
  5. 当 sitecore 将我重定向到顶部带有上述 URL 的登录页面时。我无法使用该页面登录。我得去

    http://example.com/sitecore/
    

    以便重新登录。

  6. URL 中的项目 ID 正确,它指向我正在尝试查看的消息。

这听起来好像核心数据库中缺少某些东西。

我会检查以确保核心数据库中存在 ECM 所需的角色,并检查您是否具有正确的设置以方便域 emailcampaign\username 的用户。

如果这不能解决问题,您可以在此处运行使用诊断工具来帮助您进一步调试:

https://kb.sitecore.net/articles/553662

联系 Sitecore 支持失败 - 他们有更多工具来帮助调试 ECM 问题

[已更新]

我们通过在 web.config 中添加自定义预览处理程序解决了这个问题,就像这样

<previewManager defaultProvider="customPreview" enabled="true">
 <providers>
  <clear />
  <add name="default" type="Sitecore.Publishing.PreviewProvider, Sitecore.Kernel" />
  <add name="customPreview" type="PackageName.CustomPreview, PackageName" />
 </providers>
</previewManager>

这是自定义预览的隐藏代码:

public class CustomPreview : Sitecore.Publishing.PreviewProvider
{
  public override void SetUserContext()
  {
    string shellUser = this.GetShellUser();
    if (!string.IsNullOrEmpty(shellUser))
        AuthenticationManager.SetActiveUser(shellUser);
    else
   {
        if(!Sitecore.Context.User.Name.Split('\')[1].Equals("Anonymous"))
         AuthenticationManager.SetActiveUser(Sitecore.Context.User.Name);
   }
  }
}

[旧]

我们解决了这个问题。奇怪的是,这与负载均衡器配置不当有关。我们仍然需要找出负载均衡器中出了什么问题,但是当我们从负载均衡器中删除其中一台服务器时,我们不会遇到这个问题,即,当流量只流向一个特定的服务器时,这个问题不会发生.由于我们的测试环境只部署在一台服务器上,因此我们在那里从未遇到过这个问题。