2013-03-30 3 views
0

У меня очень странная проблема с ASP.NET 4.5 Сессии на Windows, 2012asp.net 4.5 сессии потеряли и обратно через несколько секунд

Описание: Сессии работать нормально. Я просматриваю сайт, регистрируюсь, получаю доступ, например, к профилю и другим страницам aspx, которые используют сеанс. затем с одной секунды на другую, на любой странице aspx сессия будет потеряна на каждой странице aspx. через несколько секунд сессия вернется. Поэтому, если я вошел в систему до появления проблемы, я потерял значения сеанса, и через несколько секунд они вернулись. Это происходит с каждым браузером (IE, FF, Chrome). Я еще попробовал пользователь InProc, State Server, Appfabric, но все равно должен что-то сделать с помощью .net Session Handling на «toplevel» или с 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 

так ... Запуск все нормальную, щётки нагрузки, распечатать «Степ». Затем после входа в систему Step0 to 5 or 6

тогда по какой-либо причине сеанс «потерян», код выше не распечатывается. Шаг 0-6 выглядит как событие click dont fire. Ну ... но потом перезапуск AppFabric Cache, о чудо ... это работает Как я писал раньше ... То же самое происходит с State Server, а затем перезапуск StateServer разрешает проблему и Inproc, перезапуск IIS или решения приложения это ...

Просто, чтобы быть чистым. этот сеанс потерял или что-то еще на всех страницах aspx, а не только на входах. везде, где сеанс используется, по крайней мере,

+0

Есть ли у вас какие-либо мета-теги HTML? Некоторые метатеги могут помешать вашему сеансу. Более подробную информацию о сеансах на 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 секунд и т. д.

Решение, которое работает для меня, в разы превосходит производительность, но разрешает блокировку проблема:

Я использую couchbase (www.couchbase.com) в качестве денежных средств и сессии «магазин», с этой прекрасной сессии и кэш-провайдера для couchbase: https://github.com/evereq/couchbase-aspnet

Важно здесь, связанный с блокирующим probem является config part: exclusiveAccess = "false" для поставщика сеанса

2 проблемы, которые я имел, связанные с Win 8 Dev PC и Win 2012 Server. На Win 2012 нам нужно заменить dll, описанную здесь:

Для всех, кому это интересно, это x64-версия «обертки» для libtcmalloc. Просто поместите его в каталог «bin» couchbase и перезапустите службу couchbase.

x64 версия DLL http://www.mediafire.com/?xc8nurnxjqr8klb

PS: Спасибо Крису Wundram за подсказку!

На Win 8 этом блоге хорошо описывает, что делать:

http://blogs.southworks.net/mkrikorian/2013/02/06/installing-couchbase-under-windows-8/

, как я сказал, после этого преграждая проблемы ушли, и гораздо более высокую производительность

+0

раствор, используемый при http://lololo.com.br –

 Смежные вопросы

  • Нет связанных вопросов^_^