HttpContext.Current.Session 在 .NET Framework v4.8 中返回 Null

问题描述 投票:0回答:1

我正在将我的 .NET 解决方案迁移到使用 VS2022 和 .NET Framework 4.8 的新服务器。最初我的代码库目标是 .NET 4.5.2(现已停产)版本。

因此,当我移动代码库的副本并打开解决方案时,VS 要求将代码库更新到 .NET 4.8,并且全部更新。更新代码库后,

web.config
中的会话设置:

<system.web>
    <sessionState timeout="40" mode="InProc"/>
    <compilation debug="true" targetFramework="4.8"/>
    <httpRuntime targetFramework="4.5"/>
</system.web>

GetSession
方法有一行代码:

HttpContext.Current.Session.Contents[Parameter].ToString();

现在返回

NULL
和错误

未将对象引用设置为对象的实例

代码:

 public string GetSession(string Parameter)
 {
     try
     {
         return HttpContext.Current.Session.Contents[Parameter].ToString();
     }
     catch (Exception e)
     {
         return "";
     }
 }

enter image description here

完全相同的代码库在使用 .NET Framework 4.5.2 的旧服务器中运行得非常好。有关如何解决此问题的任何帮助吗?


更新:

getsession 在主文件的 page_load 事件中被调用:

protected void Page_Load(object sender, EventArgs e)
{

    try
    {
        if (IsPostBack == false)
        {
            if (sss.GetSession(xxx_Session_Type.UserRole) != null)
            {
                UserRole();
            }
        }

        if (sss.GetSession(xxx_Session_Type.UserID) != "")
        {
            divLogin.Visible = true;
            lblWelcome.Text = sss.GetSession(xxx_Session_Type.UserName).ToString();
            //UpdateConfirmItSync();
        }
        else
        {
            divLogin.Visible = false;
        }
    }
c# asp.net .net session
1个回答
0
投票

只需将此行粘贴到 web.config 中的 标记内

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

© www.soinside.com 2019 - 2024. All rights reserved.