Asp.net 未在ASHX处理程序中保存Cookie
这是一个单页应用程序,它使用cookie保存用户服务器登录的guid。服务器httpget都打包到一个ASHX文件中,并由jQuery$.ajax()调用。该项目中唯一的web文件是一个htm文件,它承载了所有javascript来实现它 当我使用Response.cookie设置cookie时,当我将其检查为Request.cookie时,我会得到一个不同的值,当我设置Response.cookie时,相应的Request.cookie在下次访问服务器时仍然包含一些旧值,而不是刚刚设置的值 我已将这两行添加到handler ASHX文件中:Asp.net 未在ASHX处理程序中保存Cookie,asp.net,cookies,httphandler,ashx,ihttphandler,Asp.net,Cookies,Httphandler,Ashx,Ihttphandler,这是一个单页应用程序,它使用cookie保存用户服务器登录的guid。服务器httpget都打包到一个ASHX文件中,并由jQuery$.ajax()调用。该项目中唯一的web文件是一个htm文件,它承载了所有javascript来实现它 当我使用Response.cookie设置cookie时,当我将其检查为Request.cookie时,我会得到一个不同的值,当我设置Response.cookie时,相应的Request.cookie在下次访问服务器时仍然包含一些旧值,而不是刚刚设置的值 我
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
Cookies是使用request.Cookies(“name”).Value获取的,设置函数如下:
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上的问题相同您应该在HttpHandlerHandler中实现一个接口,而不是同时实现两个接口。试试我的要求,谢谢。我以为我已经试过了,但在我再次尝试之前,问题就消失了。我想发生的事情是,有一种“挂起”的cookie拒绝消失,我一删除cookies,它就开始工作(在IE和FF中)。我仍在研究它,并将尽快发布更新,确认删除cookies将永久修复它。更改类的“实现”似乎会使cookie变为鬼影,而不是出现旧的cookie值。。奇怪!您应该在HttpHandlerHandler中实现一个接口,而不是同时实现两个接口。试试我的要求,谢谢。我以为我已经试过了,但在我再次尝试之前,问题就消失了。我想发生的事情是,有一种“挂起”的cookie拒绝消失,我一删除cookies,它就开始工作(在IE和FF中)。我仍在研究它,并将尽快发布更新,确认删除cookies将永久修复它。更改类的“实现”似乎会使cookie变为鬼影,而不是出现旧的cookie值。。奇怪!