【问题标题】:Session is getting empty when payment gateway posts response to .aspx page当支付网关发布对 .aspx 页面的响应时,会话变空
【发布时间】:2021-08-15 11:30:54
【问题描述】:

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

request.form["responsecode"]

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

我正在使用 .Net 框架 4.0 版

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

【问题讨论】:

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


    【解决方案1】:

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

    Get Ready for New SameSite=None; Secure Cookie Settings

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

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

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

    Work with SameSite cookies in ASP.NET

    .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);
        }
    }
    

    【讨论】:

    • 感谢您的回复。目前,我们必须保持 .net 框架版本 4.0 不变,因为我们还有一些其他紧急需求。 .net framework 4.0版还有其他解决方案吗?
    • @Vijeeshkumarvofox 检查帖子中的代码是否适合您。
    • 谢谢 Akshay,我已将 .NET 版本升级到 4.7.2 并添加了您在 Global.asax Application_BeginRequest 中提到的代码。它对我有用
    • @Vijeeshkumarvofox 如果你升级了 .NET 框架,你可以使用sessionCookie.SameSite = SameSiteMode.None 而不是设置sessionCookie.Path。提供的解决方案是小于 4.7.2 的解决方法
    猜你喜欢
    • 2019-10-19
    • 2015-04-12
    • 2021-08-15
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多