2013-03-30 117 views
0

我有一个ASP.NET很奇怪的问题在Windows 2012 4.5会话asp.net 4.5会话丢失,回来后秒

说明: 会议做工精细。我浏览网站,登录,访问使用会话的配置文件和其他aspx页面。然后从一秒到另一秒,在任何aspx页面上,会话都会丢失,在每个aspx页面上。几秒钟后,会议又回来了。所以如果我在问题出现之前登录了,我就失去了会话值,几秒钟后他们又回来了。 每个浏览器都会发生这种情况(IE,FF,Chrome)。 我还没有尝试用户InProc,状态服务器,Appfabric,但都是一样的,所以必须做一些与.net会话处理的“顶级”或与IIS,无论... 不确定,但主要是,主观上我认为在会议“失落”之前,请求非常缓慢。疯狂,他们在......之后“回来”,所以他们并没有真正迷失。

有什么想法?

UPDATE

我加了一些调试运行代码。看看登录,它最容易重现。这里的隐藏代码:

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 

所以...运行一切正常,inital负荷,打印出 “步骤A”。 然后登录后Step0到5或6

然后,由于任何原因,会话是“丢失”,上面的代码不打印出0到6步看起来像点击事件不开火。 那么......但是,然后,重新启动AppFabric Cache,哦,不知道...它工作 正如我以前写的...与State Server相同,然后重新启动StateServer解决问题和Inproc,重新启动IIS或应用程序的决心它......

只是要清楚。此会话丢失或所有aspx页面上出现问题,而不仅仅是登录。到处使用会议至少

+0

你有任何HTML META标签?一些元标签可能会混淆你的会话。有关ASP.NET会话的更多信息,请访问:http://msdn.microsoft.com/en-us/library/ms178581%28v=VS.85%29.aspx – 2013-03-30 19:42:24

+0

是的,我有 < meta name =“Googlebot”content =“all”/>

+0

这些标签都不会搞乱你的会话。 – 2013-03-30 21:01:10

回答

1

经过大量的阅读,新的文物监测等我发现真正的问题和工作的解决方案。 该问题与事实有关,即asp.net,直到4.5在某些情况下阻止会话(例如,如果你有iframes,updatepanel等),直到页面被完全加载。如果用户在我身边的另一个页面上,并且会话被阻止,则涉及到所描述的结果,等待时间为x秒等。

该解决方案对我有效,性能提高了x倍,但解决了阻止问题:

我使用Couchbase(www.couchbase.com)现金和会话“存储”,有了这个出色的会议和高速缓存提供商couchbase: https://github.com/evereq/couchbase-aspnet

这里很重要,关系到阻塞probem是config部分:会话提供者的exclusiveAccess =“false”

我遇到的2个问题,与Win 8 Dev PC和Win 2012服务器有关。 在Win 2012上,我们需要替换一个dll,如下所述:

对于任何感兴趣的人来说,这是一个用于libtcmalloc的'wrapper'的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/

正如我所说的,在此之后,阻断了问题和更好的性能

+0

解决方案使用于 http://lololo.com.br –