我正在尝试在Sitecore 8.1中启动并运行基本布局,并且我遇到了一个错误,我可以找到很少的信息.当试图查看任何页面(甚至是后端界面或从Sitecore Rocks连接)时,我收到消息"找不到会话ID管理器来管理当前请求的会话ID".
一些谷歌搜索表明,这与现成的会话提供商的一些问题有关,并建议将其交换出来以保持Mongo中的会话.Sitecore的文档提供了对共享和私有会话的描述.我试图实现这些但继续收到相同的错误.
这是我现在的代码:
APP_CONFIG /包含/ MongoSessionProvider.config
App_Config/Include/ConnectionStrings.config(摘录)
Web.config(摘录)
请注意,这是在我的本地开发机器上.我有蒙戈运行(并确认其Sitecore的连接),我用它创建Session和sharedsession数据库use session
和use sharedsession
,我的理解是在蒙戈创建数据块的方式.
我在这里错过了什么吗?或者错误是不是意味着我认为它意味着什么?
您看到的消息不应该是错误,而是日志警告.它与检索会话ID管理器的配置有关,而不是与会话本身的配置相关.
为何通常会出现此警告在Sitecore.config下面定义
了getSessionIdManager
管道.
在Sitecore.FXM.config中,为此管道配置了一个处理器:
此管道允许为请求动态选择会话ID管理器.在默认的Sitecore配置中,非默认会话ID管理器仅用于具有显式sessionId
URL参数的请求,即仅用于FXM请求.
对于所有其他请求,将不会显式选择任何会话ID管理器,并将使用默认值System.Web.SessionState.SessionIDManager
; 这反映在您看到的警告信息中.这种情况本身没有任何问题,这是默认设计.
这绝对听起来像是一个缺陷.此消息应该在每个应用程序生存期内记录一次,而不是在每个页面上作为异常引发.
您应该向Sitecore支持报告此信息.
试图修复我无法调试你的系统,所以我必须蒙住眼睛.我会尝试创建自己的Session ID Manager选择器:
public class CustomSessionIdManagerProcessor
{
public void Process(GetSessionIdManagerArgs args)
{
if(args.SessionIdManager == null)
{
args.SessionIdManager = new System.Web.SessionState.SessionIDManager();
}
}
}
将其配置为管道中的最后一个处理器getSessionIdManager
.这将确保始终显式选择的会话ID管理器,并希望能够防止错误发生.