这是一个单页面应用程序,它使用cookie来保存用户服务器登录的guid。服务器httpgets都包装在一个ASHX文件中,并且都由jQuery $ .ajax()调用。项目中唯一的Web文件是一个htm文件,它托管所有的javascript来实现它。
当我使用Response.Cookies设置cookie时,当我将其检查到Request.Cookies时,我得到一个不同的值,当我设置Response.Cookie时,下一次服务器访问时相应的Request.Cookie仍包含一些旧值,而不是刚刚设定的价值。
我已将这两行添加到处理程序ASHX文件中:
Implements System.Web.SessionState.IRequiresSessionState
Implements System.Web.SessionState.IReadOnlySessionState
我还将IsReusable属性更改为true:
ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return True
End Get
End Property
以上两种变化都没有帮助。
当我检查Session.SessionID时,它在每次服务器调用时都是不同的,我怀疑这是问题的根源 - 它应该不一样吗?
Web服务器是Visual Studio 2015调试Web服务器,而不是IIS。
使用request.Cookies(" name")获取Cookie。值和设置函数如下:
Public Sub SetCookie(ByVal Response As System.Web.HttpResponse, ByVal sCookie As String, ByVal sValue As String, Optional ByVal lTimePeriodMinutes As Integer = 30 * 24 * 60)
sCookie = sCookie.ToLower
Response.Cookies.Remove(sCookie)
Dim obj As New System.Web.HttpCookie(sCookie, sValue)
obj.Expires = DateAdd(Microsoft.VisualBasic.DateInterval.Minute, lTimePeriodMinutes, Now)
Response.Cookies.Add(obj)
End Sub
以上版本已在旧版应用程序上运行多年。
IE和Firefox上的问题是一样的