MVC3 .NET会话随机丢失会话值并返回null
|
我有In-Proc会话状态的生产问题. 我们的应用程序基于MVC 3 .NET框架,并集成到我们运行Sitecore CMS的站点中. 我们的用户在应用程序流程中随机地经历了“对象引用未设置为对象的实例”. 在广泛的日志记录和跟踪之后,我们可以得出结论,这是在会话对象返回null时引起的. 这是关于我们发现的和我们所知道的一些细节. >会话ID对于同一个用户是持久的并且全部通过 附注:由于我们的Sitecore CMS,我们必须使用In-Proc会话状态.因此,改变设计不是一种选择. 我有一个理论,它可能与会话锁定或从并发访问尝试损坏. 在我们的应用程序中,我们看到很多地方出现了这个问题,当用户被javascript(windows.location)重定向时. 并且在正在进行异步ajax调用的区域中. 我们一直在摸不着头脑,我想知道是否有人会对这个问题有什么见解或理论? 谢谢 添加注意: @Mystere&& @ H27Studio,所以我也发现了与sessionID或会话重置问题有关的内容.在某些情况下,我们发现在页面重定向上它会触发对方法的两次重复GETS调用,第一次调用缺少sessionID并随机重定向到其中一个服务器(这是因为来自负载均衡器的服务器持久会话是基于客户端IP,sessionID和其他头信息创建唯一会话以将客户端保留在一个服务器上).当我们的重定向页面使用window.location时,每次都会发生这种情况. 如果错误的,没有sessionID调用命中同一服务器,这将导致客户端的“对象引用未设置…”问题. (这可能是因为没有sessionID的第一个错误调用导致应用程序创建一个覆盖原始会话对象的新会话)所以即使在正确的sessionID传递到应用程序的第二个调用中,我们也会发现会话对象包含null . 因此,我认为重复调用存在一个问题,即清除会话对象,这不确定导致开始的原因或原因. 任何人都有这方面的线索?谢谢 更新: >我们在进行异步Ajax调用的领域存在问题,因此我们计划删除异步功能并让Ajax同步运行. 一旦我们将其部署到生产环境,将发布更改的效果. 感谢所有的评论. 解决方法经过几个月的搜索和调试,我想我们终于得出了结论. Sitecore Analytics机器人会话超时似乎存在错误.我们首先注意到,每当随机会话丢失是由于会话预先成熟超时,我们注意到这些会话被设置为1分钟超时而不是120分钟.在搜索完所有配置文件后,我们注意到Sitecore Analytic.Robots.SessionTimeout是唯一设置为1min的超时值. 通过增加此值,它解决了我们的会话超时问题. 因此,根本问题是Sitecore Analytics错误地将一些访客会话识别为机器人会话并将其超时重新分配给1分钟.这可能是一个要报告的错误. 更新: Sitecore CMS旨在与ASP.NET WebForms技术一起使用.使用Web表单时,bot检测依赖于页面中的控件.很自然,你不能在ASP.NET MVC应用程序中使用它,但有一个简单的解决方案 – 将以下代码放在元素中: <%
if (Context.Diagnostics.Tracing || Context.Diagnostics.Profiling)
{
Response.Write("<!-- Visitor identification is disabled because debugging is active. -->");
}
else if (Tracker.IsActive && (Tracker.Visitor.VisitorClassification == 925))
{
Response.Write("<link href="/layouts/System/VisitorIdentification.aspx" rel="stylesheet" type="text/css" />");
}
%> (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET MVC 3中的DropDownList
- ASP.NET MVC中%:和%=有什么区别?
- asp.net-mvc-4 – 如何解决错误“安全透明方法尝试”System
- asp.net – VS 2010失败调试:HttpException在LoadControl中
- asp.net-mvc – ASP.NET MVC – 如何获取一个URL而不是一个
- asp.net-mvc – MVVM ViewModel vs. MVC ViewModel
- asp.net – 发布网站时,我的默认文档名称不断从IIS中删除
- asp.net – HttpClient:通常只允许使用每个套接字地址(协议
- 在ASP.NET MVC中模拟User.Identity
- 在ASP.NET MVC 3中可以使用甜甜圈缓存
- asp.net-mvc – 嵌套TagBuilder -as TagBuilderT
- asp.net-mvc-4 – mvc4 url验证
- ASP.NET:获取*真实*原始URL
- asp.net-mvc – 在ASP.NET MVC中添加服务引用4
- asp.net-mvc – ASP.NET MVC 3模型的部分验证
- asp.net-mvc – ASP.NET MVC Ajax.BeginForm不起
- asp.net – 为什么%=%标记呈现为“%=%”?
- 集成ASP.NET Webforms,WebAPI和AngularJS
- 如何在ASP.net中取消事件冒泡?
- asp.net – Thread.CurrentPrincipal在使用WebGe
