我们遇到以下问题:当我们通过EXM发送电子邮件时,电子邮件正文中的链接对某些用户不起作用。
默认情况下,电子邮件正文中的链接始终转换为:
http://domainname/sitecore/RedirectUrlPage.aspx?ec_contact_id=xxxx84B137D2037C7D180&ec_message_id=xxxxB4CEAA3FD1A3B&ec_url=%2fthelinkpath
显然是出于追踪原因而做的。
但是,某些用户在导航链接时会遇到404错误。日志总是说如下:
ERROR EmailCampaign: Object reference not set to an instance of an object.
Exception: System.NullReferenceException
Message: Object reference not set to an instance of an object.
Source: Sitecore.Analytics
at Sitecore.Analytics.Tracking.StandardSession.InitializePage(ICurrentPageContext currentPageContext, ICurrentPageContext oldPage)
at Sitecore.Analytics.Tracking.StandardSession.Identify(String userName)
at Sitecore.Modules.EmailCampaign.Core.Pipelines.RedirectUrl.IdentifyContact.Process(RedirectUrlPipelineArgs args)
at (Object , Object[] )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Modules.EmailCampaign.UI.RedirectUrlPage.HandleMessageEvent(ID messageId, ID contactId)
at Sitecore.Modules.EmailCampaign.UI.MessageEventPage.OnLoad(EventArgs e)
为用户修复此错误的唯一方法是清除其Cookie或使用其他浏览器或使用隐身模式。用户目前已从网站注销。
Sitecore版本8.0 + EXM
以前有人遇到过这个问题吗?
答案 0 :(得分:5)
实际上,这是因为以前会话中存储的cookie,谢谢Tchami。
Sitecore支持的答案是一样的:
当您打开多个邮件时会发生此错误 contactId在同一个浏览器中。
但除了清除cookie或使用其他浏览器外,他们没有提出任何解决方案。
然而,即使对于这种很少出现的案例,我们也不想打破用户体验。
因此,为了处理异常,我们发现应该重写以下管道处理器:
<processor type ="Sitecore.Modules.EmailCampaign.Core.Pipelines.RedirectUrl.IdentifyContact, Sitecore.EmailCampaign" />
您可以查看自定义处理器here的代码。