gpt4 book ai didi

c# - 手动创建/填充 .NET Session 对象

转载 作者:太空宇宙 更新时间:2023-11-03 11:34:23 25 4
gpt4 key购买 nike

首先介绍一下背景。我正在使用 .NET 输出缓存和替换控件来在每次页面刷新时更新一些位。替换控件使用的静态方法需要访问 Session 对象。不幸的是,HttpContext session 在这些方法中为空。

我不会重写我的应用程序以使用与 session 不同的商店。除了这一方面,Session 非常适合我需要的一切。

我能否手动创建或填充 session 对象或以其他方式通过某种黑魔法获取其数据? session cookie 仍在从客户端设置到服务器。信息必须存在于某处。我如何获得它?

最佳答案

我不相信这是一个“好”的方法......但是你可以非常狡猾地将对 Session 的引用存储在共享/静态变量中然后访问它。

Public Class SessionHelper

Public Shared TheSession As HttpSessionState

End Class

在您的 Session Start 事件中(还没有找到放置它的最佳位置,因为据我所知,Session 在 Application start 中不可用)

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)

' Store a reference...only do this once etc etc
If SessionHelper.TheSession Is Nothing Then
SessionHelper.TheSession = HttpContext.Current.Session
End If

End Sub

然后在你的代码中你可以只引用助手

Dim someVariable as String = SessionHelper.TheSession.Item("ItemName")

关于此方法我不确定的几件事:

  • 不确定 session 对象现在是否不是线程安全的
  • 好像不太对
  • 这个例子非常简单...

编辑
我通过向缓存添加一些内容并查看 session 在缓存删除回调中是否可用(其中 Http.Context.Current 在其中不可用)来验证这对我有用。

编辑2
这是它正确返回值的屏幕截图。所以它一定在某种程度上起作用,但是没有设置 SessionId 的事实有点令人担忧......我知道我之前使用过这种技术来访问 Cache 对象但是缓存就是缓存, session 在哪里确实需要一些东西来识别每个 session ......无论如何,你去吧: enter image description here

关于c# - 手动创建/填充 .NET Session 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6783352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com