我对Windows 2012上的ASP.NET 4.5会话有一个非常奇怪的问题
描述: 会话工作正常。我浏览网站,登录,访问例如个人资料和其他使用会话的aspx页面。然后从一秒到另一个,在任何aspx页面上,会话在每个aspx页面上丢失。几秒钟后,会话又回来了。因此,如果我在问题出现之前登录,我会丢失会话值,几秒钟后他们又回来了。 每个浏览器(IE,FF,Chrome)都会发生这种情况。 我确实尝试过使用InProc,State Server,Appfabric,但是完全相同,所以必须要对.net会话处理做一些事情" toplevel"或者与IIS,无论...... 不确定,但主要是,主观上我认为请求在会议失败之前非常缓慢"丢失"。疯了,他们回来了#34;之后...所以他们并没有真正迷失。
有什么想法吗?
更新
我添加了一些debuging代码。看看登录,它最容易重现。这里的代码隐藏:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Response.Write("StepA/")
End Sub
Protected Sub btnSignin(ByVal sender As Object, ByVal e As EventArgs)
Response.Write("Step0/")
If System.Web.Security.Membership.ValidateUser(loginEmail.Value, loginPassword.Value) = True Then
Response.Write("Step1/")
FormsAuthentication.SetAuthCookie(loginEmail.Value, False)
Response.Write("Step2/")
Dim ui As New UserInfo
Response.Write("Step3/")
ui.InitUserInfo(loginEmail.Value)
Response.Write("Step4/")
If Request.UrlReferrer.OriginalString.Contains("Login.aspx") = True Then
Response.Write("Step5/")
Response.Redirect("/admin/Default.aspx")
Else
Response.Write("Step6/")
Response.Redirect(Request.UrlReferrer.OriginalString)
End If
Else
Response.Write("Step7/")
loginfailed.Visible = True
End If
End Sub
所以...运行所有正常的,初始负载,打印出来" stepA"。 然后登录Step0到5或6
然后,由于任何原因,会话被"丢失",上面的代码不打印出步骤0到6.看起来像点击事件不会触发。 嗯...但是,然后重新启动AppFabric Cache,哦,不知道......它有效 正如我之前写的那样...与State Server相同,然后重新启动StateServer解决问题和Inproc,重新启动IIS或应用程序解决它....
要清楚。这个会话丢失或者所有aspx页面上的问题都出现了,而不仅仅是登录。到处使用会话的地方至少
答案 0 :(得分:1)
该解决方案对我有用,x性能更好但解决了阻塞问题:
我使用Couchbase(www.couchbase.com)作为现金和会话“商店”,这个优秀的会话和缓存提供商为couchbase: https://github.com/evereq/couchbase-aspnet
重要的是,与阻止探测器相关的是配置部分:会话提供者的exclusiveAccess =“false”
我遇到的2个问题,与Win 8 Dev PC和Win 2012服务器有关。 在Win 2012上,我们需要替换一个dll,如下所述:
对于任何感兴趣的人来说,这是libtcmalloc的'包装器'的x64版本。 只需将它放在couchbase'bin'目录中,然后重新启动couchbase服务即可。
dll的x64版本 http://www.mediafire.com/?xc8nurnxjqr8klb
PS:感谢Chris Wundram的提示!
在Win 8上,这篇博客文章描述了该怎么做:
http://blogs.southworks.net/mkrikorian/2013/02/06/installing-couchbase-under-windows-8/
正如我所说,在此之后,阻止问题消失并且表现更好