Asp.Net MVC 4 应用程序 - 在 iframe 内发送请求已清除 SQL 服务器会话
Asp.Net MVC 4 App - Sending Request Within iframe Cleared SQL Server Session
我有一个使用自定义会话包装器的 Asp.Net MVC 4 应用程序。会话保存在 SQL 服务器中(SQL 服务器模式 - 20 分钟后过期)。典型的客户在 iframe 中打开应用程序,处理他们的订单,并在完成后关闭 iframe。它一直运行良好,直到最近 IT 安装了最新的 Microsoft 更新。所有 ajax 请求应用程序在 iframe 内发出时返回 500 错误消息。经过一些调试,我意识到会话对象是空的。结果,应用程序抛出了空异常。如果我要在 iframe 之外使用该应用程序,它会按预期工作。我一直无法找到解决方法。如果没有解决方法,我将不得不开始添加隐藏标签,以便在请求期间可以使用其中的一些值。有人有解决此问题的方法吗?
会话包装器class
[Serializable]
[SessionExpireFilter]
public class SessionWrapper
{
public static CurrentOrder currentOrder
{
get
{
if (HttpContext.Current.Session["Order"] != null)
{
return (CurrentOrder)HttpContext.Current.Session["Order"];
}
else
{
return null;
}
}
set
{
HttpContext.Current.Session["Order"] = value;
}
}
}
在用户开始订单时初始化包装器
CurrentOrder currentOrder= new CurrentOrder();
SessionWrapper.CurrentOrder = currentOrder;
读取或设置会话变量。
SessionWrapper.CurrentOrder.OrderId = anOrderID
if(SessionWrapper.CurrentOrder != null && SessionWrapper.CurrentOrder.OrderId > 0)
anOrderId = SessionWrapper.CurrentOrder.OrderId
更新于 01/09/2020
经过一些额外的调试,请求不包含会话信息。结果,当session不为null时的那段代码永远不会执行,因为session为null。
HttpContext.Current.Session["Order"] != null
终于在this论坛找到了答案。将 'cookieSameSite="None"' 添加到我的 sessionState 标记可以解决问题。
我有一个使用自定义会话包装器的 Asp.Net MVC 4 应用程序。会话保存在 SQL 服务器中(SQL 服务器模式 - 20 分钟后过期)。典型的客户在 iframe 中打开应用程序,处理他们的订单,并在完成后关闭 iframe。它一直运行良好,直到最近 IT 安装了最新的 Microsoft 更新。所有 ajax 请求应用程序在 iframe 内发出时返回 500 错误消息。经过一些调试,我意识到会话对象是空的。结果,应用程序抛出了空异常。如果我要在 iframe 之外使用该应用程序,它会按预期工作。我一直无法找到解决方法。如果没有解决方法,我将不得不开始添加隐藏标签,以便在请求期间可以使用其中的一些值。有人有解决此问题的方法吗?
会话包装器class
[Serializable]
[SessionExpireFilter]
public class SessionWrapper
{
public static CurrentOrder currentOrder
{
get
{
if (HttpContext.Current.Session["Order"] != null)
{
return (CurrentOrder)HttpContext.Current.Session["Order"];
}
else
{
return null;
}
}
set
{
HttpContext.Current.Session["Order"] = value;
}
}
}
在用户开始订单时初始化包装器
CurrentOrder currentOrder= new CurrentOrder();
SessionWrapper.CurrentOrder = currentOrder;
读取或设置会话变量。
SessionWrapper.CurrentOrder.OrderId = anOrderID
if(SessionWrapper.CurrentOrder != null && SessionWrapper.CurrentOrder.OrderId > 0)
anOrderId = SessionWrapper.CurrentOrder.OrderId
更新于 01/09/2020
经过一些额外的调试,请求不包含会话信息。结果,当session不为null时的那段代码永远不会执行,因为session为null。
HttpContext.Current.Session["Order"] != null
终于在this论坛找到了答案。将 'cookieSameSite="None"' 添加到我的 sessionState 标记可以解决问题。