c# - 当支付网关发布对 .aspx 页面的响应时,会话变空
问题描述
我正在使用 c# asp.net(.Net framework 4.0) 集成支付网关“First Cardinal Commerce”。支付网关将响应值发布到我们的商家网站。对于创建的名为“Success.aspx”的页面,该页面从支付网关接收一些响应值,这些响应值在处理交易后由支付网关发布。我使用下面的代码来接收响应值
request.form["responsecode"]
在这里,我面临的问题是,当支付网关向该页面发布响应值时,页面“Success.aspx”的会话变空。我可以收到响应值,但由于会话为空,它被重定向到登录页面。
我正在使用 .Net 框架 4.0 版
您能否让我知道为什么会发生这种情况以及当页面被支付网关重定向时如何保留会话?
解决方案
当您导航到外部应用程序并返回时,您的所有 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 属性。
.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);
}
}
推荐阅读
- node.js - Sequelizejs从关系表中获取字段到关联belongsToMany
- ruby-on-rails - 如何更新项目中的 Rails 版本?Bundler 找不到 gem “activemodel” 的兼容版本
- c# - 如何将注册中设置的值显示到 seevalue() 函数中?范围
- javascript - 如何通过状态向单选按钮添加标签
- amazon-web-services - 未知错误,来自 fetch 的响应正文未定义
- mysql - 如何将具有许多这样的关系的列分组?
- aurelia - Aurelia 路由器,仅 html 视图,添加一些 javascript?
- prolog - 如何在序言中找到递归余数(没有算术)
- c# - 如何确保门票不会超过允许的销售量?
- python - 将分组的数据框分成单独的数据框