Asp.Net MVC 4应用-在iframe中清除SQL Server会话中发送请求

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

我有一个使用自定义会话包装器的Asp.Net MVC 4应用程序。会话以SQL服务器保存(SQL Server模式-20分钟后过期)。典型的客户在iframe中打开应用程序,处理订单,并在完成后关闭iframe。直到最近,IT安装了最新的Microsoft更新,它一直运行良好。在iframe内时,所有ajax请求的应用程序都返回500错误消息。经过一些调试后,我意识到会话对象为null。结果,该应用程序引发了null异常。如果要在iframe之外使用该应用程序,它将按预期工作。我无法找到解决方法。如果没有解决方法,则必须开始添加隐藏标签,以便在请求期间可以使用其中的某些值。有没有人解决此问题?

会话包装器类

[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

经过一些额外的调试后,请求中不包含会话信息。结果,因为会话为空,所以永远不会执行会话不为空的代码。

HttpContext.Current.Session["Order"] != null
asp.net-mvc-4 iframe session-variables session-state
1个回答
0
投票

最后,我在this论坛中找到了答案。将'cookieSameSite =“ None”'添加到我的sessionState标记中可以解决此问题。

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