首页 > 解决方案 > 当支付网关发布对 .aspx 页面的响应时,会话变空

问题描述

我正在使用 c# asp.net(.Net framework 4.0) 集成支付网关“First Cardinal Commerce”。支付网关将响应值发布到我们的商家网站。对于创建的名为“Success.aspx”的页面,该页面从支付网关接收一些响应值,这些响应值在处理交易后由支付网关发布。我使用下面的代码来接收响应值

request.form["responsecode"]

在这里,我面临的问题是,当支付网关向该页面发布响应值时,页面“Success.aspx”的会话变空。我可以收到响应值,但由于会话为空,它被重定向到登录页面。

我正在使用 .Net 框架 4.0 版

您能否让我知道为什么会发生这种情况以及当页面被支付网关重定向时如何保留会话?

标签: c#asp.net.netpayment-gateway

解决方案


当您导航到外部应用程序并返回时,您的所有 ASP.net 会话 cookie 都会丢失。

为新的 SameSite 做好准备=无;安全 Cookie 设置

在 2 月份的 Chrome 80 中,Chrome 会将没有声明 SameSite 值的 cookie 视为 SameSite=Lax cookie。只有具有 SameSite=None 的 cookie;安全设置可用于外部访问,前提是它们是从安全连接访问的。SameSite=None 和 Secure 的 Chrome 平台状态跟踪器将继续使用最新的发布信息进行更新。

首先,您需要将 .net 框架从 4.0 升级到至少 4.7.2。或更高。

为什么? 更新后的标准不向后兼容以前的标准[...]Microsoft 不支持低于 4.7.2 的 .NET 版本来编写相同站点 cookie 属性。

在 ASP.NET 中使用 SameSite cookie

在此处输入图像描述

.NET 版本低于 4.7.2 的解决方法

修改 ASP.NET 会话 Cookie(检查 Cookie 名称是否在您的应用程序中自定义为其他名称)。可能在Global.asax Application_BeginRequest或取决于您的代码。

protected void Application_BeginRequest(object sender, EventArgs e)
{
    if (Request.Cookies.Count > 0 && Request.Cookies["ASP.NET_SessionId"] != null)
    {
        HttpCookie sessionCookie = Request.Cookies["ASP.NET_SessionId"];
        sessionCookie.Path = "/; SameSite=None";
        sessionCookie.Secure = true;                
        Response.SetCookie(sessionCookie);
    }
}

推荐阅读