C# 从第三方API(支付网关)重定向后丢失会话数据
我正在一个电子商务网站上工作,该网站建立在ASP.NETMVC之上。我们使用第三方支付网关进行在线支付交易。基本上,我使用C# 从第三方API(支付网关)重定向后丢失会话数据,c#,api,google-chrome,redirect,session-state,C#,Api,Google Chrome,Redirect,Session State,我正在一个电子商务网站上工作,该网站建立在ASP.NETMVC之上。我们使用第三方支付网关进行在线支付交易。基本上,我使用successUrl和failUrl将用户重定向到支付网关。如果一切正常,则支付网关会将用户重定向到mysuccessUrl 我面临的问题是,一旦用户被重定向到我的successUrl,我就会丢失所有会话数据。因此,我无法跟踪此用户,无法进一步处理订单。更多详情: 我正在使用InProcSessionState 我已经在SessionState中定义了超时,但这没有帮助 我还
successUrl
和failUrl
将用户重定向到支付网关。如果一切正常,则支付网关会将用户重定向到mysuccessUrl
我面临的问题是,一旦用户被重定向到我的successUrl
,我就会丢失所有会话数据。因此,我无法跟踪此用户,无法进一步处理订单。更多详情:
InProc
SessionState超时
,但这没有帮助Session\u Start
方法的Global.asax
文件中定义了Session.Timeout
http
,支付网关使用https
PHP
您需要将此代码添加到Global.asax
Session\u Start
event
if (Response.Cookies["ASP.NET_SessionId"] != null)
{
Response.Cookies["ASP.NET_SessionId"].SameSite = SameSiteMode.None;
}
有关更多详细信息,请参阅文档。您需要将此代码添加到Global.asax
Session\u Start
事件中
if (Response.Cookies["ASP.NET_SessionId"] != null)
{
Response.Cookies["ASP.NET_SessionId"].SameSite = SameSiteMode.None;
}
请参阅文档以了解更多详细信息。我不知道这是否是您的问题,但今年我们在支付网关中遇到了同样的问题,我们意识到这个问题是由您造成的。在web.config中添加一些参数为我们解决了这个问题 用于.NET 4.7.2及以上版本
<configuration>
<system.web>
<sessionState cookieSameSite="None" />
<system.web>
<configuration>
对于旧版本:
<system.webServer>
<rewrite>
<outboundRules>
<rule name="Add SameSite" preCondition="No SameSite">
<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
<action type="Rewrite" value="{R:0}; SameSite=None" />
<conditions>
</conditions>
</rule>
<preConditions>
<preCondition name="No SameSite">
<add input="{RESPONSE_Set_Cookie}" pattern="." />
<add input="{RESPONSE_Set_Cookie}" pattern="; SameSite=None" negate="true" />
<add input="{HTTP_USER_AGENT}" pattern="\(iP.*; CPU .*OS 12" negate="true" />
<add input="{HTTP_USER_AGENT}" pattern="Macintosh; Intel Mac OS X 10_14.*Safari" negate="true" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
</system.webServer>
我不知道这是否是您的问题,但今年,我们在支付网关中遇到了同样的问题,我们意识到这个问题是由您造成的。在web.config中添加一些参数为我们解决了这个问题 用于.NET 4.7.2及以上版本
<configuration>
<system.web>
<sessionState cookieSameSite="None" />
<system.web>
<configuration>
对于旧版本:
<system.webServer>
<rewrite>
<outboundRules>
<rule name="Add SameSite" preCondition="No SameSite">
<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
<action type="Rewrite" value="{R:0}; SameSite=None" />
<conditions>
</conditions>
</rule>
<preConditions>
<preCondition name="No SameSite">
<add input="{RESPONSE_Set_Cookie}" pattern="." />
<add input="{RESPONSE_Set_Cookie}" pattern="; SameSite=None" negate="true" />
<add input="{HTTP_USER_AGENT}" pattern="\(iP.*; CPU .*OS 12" negate="true" />
<add input="{HTTP_USER_AGENT}" pattern="Macintosh; Intel Mac OS X 10_14.*Safari" negate="true" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
</system.webServer>
intellisense显示不允许使用cookieSameSite。虽然尝试过,但不起作用。您使用的是哪个.net版本?您使用的是哪个浏览器?我刚刚在Firefox中测试过,我的代码可以正常工作,但在chrome中不工作。嗨!在尝试了旧版本的代码后,我从chrome收到一条错误消息,说此站点无法提供安全连接
,这可能与ssl加密有关。你确定一切正常吗?intellisense显示cookieSameSite
是不允许的。虽然尝试过,但不起作用。您使用的是哪个.net版本?您使用的是哪个浏览器?我刚刚在Firefox中测试过,我的代码可以正常工作,但在chrome中不工作。嗨!在尝试了旧版本的代码后,我从chrome收到一条错误消息,上面说此站点无法提供安全连接
,这可能与ssl加密有关。你确定一切正常吗?嗨!我正在使用.NET4.5。我收到一条错误消息,上面说,System.Web.HttpCokkie不包含SameSite的定义
4.7.2可以吗?很抱歉,我不能!我正在使用.NET4.5。我收到一条错误消息,上面说,System.Web.HttpCokkie不包含SameSite的定义
您可以将目标设置为4.7.2吗?很抱歉,我不能