我正在将我的 .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 "";
}
}
完全相同的代码库在使用 .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;
}
}
只需将此行粘贴到 web.config 中的
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />