首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从ASP.NET中的任何类访问会话变量?

如何从ASP.NET中的任何类访问会话变量?
EN

Stack Overflow用户
提问于 2009-03-07 08:48:43
回答 5查看 339.2K关注 0票数 165

我在应用程序的App_Code文件夹中创建了一个类文件。我有一个会话变量

代码语言:javascript
复制
Session["loginId"]

我想在我的类中访问这个会话变量,但是当我编写下面的代码行时,它给出了错误

代码语言:javascript
复制
Session["loginId"]

谁能告诉我如何访问在ASP.NET 2.0中的app_code文件夹(C#)中创建的类中的会话变量

EN

回答 5

Stack Overflow用户

发布于 2009-03-07 08:50:38

通过线程的HttpContext访问会话:-

代码语言:javascript
复制
HttpContext.Current.Session["loginId"]
票数 108
EN

Stack Overflow用户

发布于 2010-06-11 01:42:15

所建议的解决方案的问题在于,如果您使用进程外会话存储,它可能会破坏SessionState中内置的一些性能特性。( "State Server Mode“或"SQL Server Mode")。在oop模式中,需要在页面请求结束时序列化会话数据,并在页面请求开始时反序列化会话数据,这可能会耗费大量资源。为了提高性能,SessionState只尝试在第一次访问时反序列化变量所需的内容,并且只重新序列化和替换已更改的变量。如果你有很多会话变量,并把它们都放到一个类中,那么你会话中的所有东西基本上都会在每个使用会话的页面请求上被反序列化,而且所有东西都需要再次序列化,即使只有一个属性因为类的改变而改变了。如果你使用了大量的会话和oop模式,就需要考虑一些问题。

票数 24
EN

Stack Overflow用户

发布于 2019-01-31 00:22:48

在asp.net核心中,这是不同的工作方式:

代码语言:javascript
复制
public class SomeOtherClass
{
    private readonly IHttpContextAccessor _httpContextAccessor;
    private ISession _session => _httpContextAccessor.HttpContext.Session;

    public SomeOtherClass(IHttpContextAccessor httpContextAccessor)
    {
        _httpContextAccessor = httpContextAccessor;
    }

    public void TestSet()
    {
        _session.SetString("Test", "Ben Rules!");
    }

    public void TestGet()
    {
        var message = _session.GetString("Test");
    }
}

来源:https://benjii.me/2016/07/using-sessions-and-httpcontext-in-aspnetcore-and-mvc-core/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/621549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档