当我在 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
以下是我对这个问题的了解:
- 虽然这种情况经常发生,但有时它会适用于相同的消息和相同的预览用户(对于上面 URL 中提到的联系人)。
- 试图访问 ECM 中消息的 sitecore 用户拥有他试图访问的消息的所有访问权限。
- 我在另一台服务器上有一个测试环境 运行,它工作正常。但是在生产环境中是不行的。
- 我 运行 我的网站 Sitecore.NET 6.6.0(修订版 121015)版本。
当 sitecore 将我重定向到顶部带有上述 URL 的登录页面时。我无法使用该页面登录。我得去
http://example.com/sitecore/
以便重新登录。
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);
}
}
}
[旧]
我们解决了这个问题。奇怪的是,这与负载均衡器配置不当有关。我们仍然需要找出负载均衡器中出了什么问题,但是当我们从负载均衡器中删除其中一台服务器时,我们不会遇到这个问题,即,当流量只流向一个特定的服务器时,这个问题不会发生.由于我们的测试环境只部署在一台服务器上,因此我们在那里从未遇到过这个问题。
每当我在 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
以下是我对这个问题的了解:
- 虽然这种情况经常发生,但有时它会适用于相同的消息和相同的预览用户(对于上面 URL 中提到的联系人)。
- 试图访问 ECM 中消息的 sitecore 用户拥有他试图访问的消息的所有访问权限。
- 我在另一台服务器上有一个测试环境 运行,它工作正常。但是在生产环境中是不行的。
- 我 运行 我的网站 Sitecore.NET 6.6.0(修订版 121015)版本。
当 sitecore 将我重定向到顶部带有上述 URL 的登录页面时。我无法使用该页面登录。我得去
http://example.com/sitecore/
以便重新登录。
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);
}
}
}
[旧]
我们解决了这个问题。奇怪的是,这与负载均衡器配置不当有关。我们仍然需要找出负载均衡器中出了什么问题,但是当我们从负载均衡器中删除其中一台服务器时,我们不会遇到这个问题,即,当流量只流向一个特定的服务器时,这个问题不会发生.由于我们的测试环境只部署在一台服务器上,因此我们在那里从未遇到过这个问题。