在vb.net page_load和Handler之间松开会话

时间:2014-02-18 10:00:43

标签: asp.net vb.net session session-variables session-state

我在一个vb.net Web应用程序中管理会话时遇到问题。我将尝试解释工作流程和问题,我希望有人知道可能发生的事情

我有一个页面user.aspx 在user.aspx.vb Page_Load函数中,我正在执行此操作:Session("userid") = userId将标识符存储在会话中

稍后在javascript jQuery(document).ready我正在对这样的处理程序进行ajax调用

$.getJSON('User.ashx', { a: 'getCategories' }
).done(function (json) {
    //process json response
});

在User.ashx.vb中我有下一个结构

Implements System.Web.IHttpHandler, IRequiresSessionState

Sub ProcessRequestBase(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
    ProcessRequest(New HttpContextWrapper(context))
End Sub

Sub ProcessRequest(ByVal context As HttpContextBase)
    Dim userId As String = CStr(context.Session("userid"))
    'In this point sometins userId is null and sometimes has the value
    'Handle action to build json response


    context.Response.Cache.SetCacheability(System.Web.HttpCacheability.ServerAndNoCache)
    context.Response.Cache.SetNoStore()
    context.Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate")
    context.Response.AppendHeader("Pragma", "no-cache")
    context.Response.AppendHeader("Expires", "0")
    context.Response.ContentType = "application/json"
    context.Response.Write(resp)

在page_load中我设置了几个Session变量,在Handler中的一些ajax请求中我使用了这个值。

在我的本地计算机和我尝试使用Windows 7的另一台计算机上工作正常但是在服务器中,使用Windows XP,有时当我在处理程序中收到会话时,会话是空的。

我已经检查过,所有请求之间的会话ID是相同的,但会话完全是空的,但如果我刷新页面有时会传播一些值,处理程序可以检索值,如果我继续刷新值仍然存在两三次,之后再次丢失。

我搜索了一些Session.abandon()或Session.clear(),但代码中没有

会话状态的web.config中的配置是:

<sessionState mode="InProc" cookieless="false" timeout="20"/>

有什么建议吗?

0 个答案:

没有答案