.NET 框架 4.5.2 上的 ASP.NET MVC 5 应用程序。
使用 CyberSource 提交付款。
向 CyberSource 提交付款发送参数时:“override_custom_receipt_page”指定 Cybersource 在处理付款后应返回的 MVC Action。
在生产环境中,付款被发送到
https://secureacceptance.cybersource.com . . . .
一切正常。
在本地、DEV、QA 环境中,付款被发送到
https://testsecureacceptance.cybersource.com . . . .
在这些环境中,CS 确实返回到指定的 MVC 操作,但 SessionId 不同,而不是向 CS 发送请求的会话的 SessionId。
当然,MVC 操作找不到任何 Session 对象,需要处理来自 CS 的回复。
并且回复处理不正确。
我用谷歌搜索,找到了一些重新更改会话 ID 的信息,尝试了一些建议,但没有帮助。
Global.asax.cs 确实有 Session_Start:
protected void Session_Start()
{
Session["init"] = 0;
}
此外,在web.config
:
<sessionState mode="InProc" customProvider="DefaultSessionProvider" timeout="20">
<providers>
<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=<..value here..>" connectionStringName="DefaultConnection" />
</providers>
</sessionState>
DEV、QA、PROD 环境位于 Azure 中。
此外,到目前为止,代码似乎可以正常运行 5 年,然后在 Local、DEV、QA 中出现故障。
在将 DEV 和 QA 环境迁移到 Azure 之后,它似乎已经崩溃了。
但是,本地环境不在 Azure 中,它是我自己的笔记本电脑。
Local、DEV、QA 没有负载均衡器。
另外,我刚刚找到关于“Chrome 已更改 cookie 自 2019 年 12 月以来的工作方式”的信息,关于 sameSite 属性。但是,再次 - 为什么相同的代码在没有相同站点的情况下在生产中工作并且在其他环境中不起作用?
如果有人对可能发生的事情有任何想法,为什么 CS 不能回到同一个会话,将不胜感激。
非常感谢