当支付网关发布对 .aspx 页面的响应时,会话变空

Session is getting empty when payment gateway posts response to .aspx page

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

request.form["responsecode"]

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

我正在使用 .Net 框架 4.0 版

你能告诉我为什么会这样吗?当页面被支付网关重定向时如何保留会话?

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

Get Ready for New SameSite=None; Secure Cookie Settings

With Chrome 80 in February, Chrome will treat cookies that have no declared SameSite value as SameSite=Lax cookies. Only cookies with the SameSite=None; Secure setting will be available for external access, provided they are being accessed from secure connections. The Chrome Platform Status trackers for SameSite=None and Secure will continue to be updated with the latest launch information.

首先,您需要将 .net Framework 从 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);
    }
}