C# 在同一操作中保存会话ID和更新会话变量
由于我是新手,我可能会使用错误的方法,但我的问题是: 我从第三方获得了一个到动作的异步post。在那篇文章中,我得到了一个用户sessionId。如何将sessionvariables保存到该Id 如果我喜欢这个:C# 在同一操作中保存会话ID和更新会话变量,c#,asp.net,asp.net-mvc,session-variables,sessionid,C#,Asp.net,Asp.net Mvc,Session Variables,Sessionid,由于我是新手,我可能会使用错误的方法,但我的问题是: 我从第三方获得了一个到动作的异步post。在那篇文章中,我得到了一个用户sessionId。如何将sessionvariables保存到该Id 如果我喜欢这个: manager.SaveSessionID(System.Web.HttpContext.Current, sessionId, out redirected, out isAdded); Session["test"] = "AAA"; 似乎会话[“测试”]已保存到旧会话 更
manager.SaveSessionID(System.Web.HttpContext.Current, sessionId, out redirected, out isAdded);
Session["test"] = "AAA";
似乎会话[“测试”]已保存到旧会话
更新:
这已经完成了:
1) 我确实向第三方发帖。
2) 我得到一个url并将用户重定向到该url。
3) 在用户在第三方网站上按“ok”后,我会收到第三方网站对某个操作的回发。在这个操作中,我尝试保存一个sessionvariable。但是我看到sessionId是不同的。但是,我得到了正确的sessionId作为回发变量
Thank/A不应该从应用程序代码中调用,这可能就是您得到意外结果的原因
我想知道为什么您首先要尝试手动设置ASP.NET会话ID(听起来很像?只需在活动会话中跟踪您的第三方会话标识符更安全,例如
Session["3rdPartySessionId"] = sessionId;
由于某种原因,当我收到回发时,我的
HttpContext.Session.SessionID
与用户cookie不同
这是因为您使用的是基于cookie的会话状态。从
使用基于cookie的会话状态时,ASP.NET在使用会话对象之前不会为会话数据分配存储。因此,在访问会话对象之前,将为每个页面请求生成一个新的会话ID 发送到第三方API的请求与处理回调的请求不同,因此,为了保持相同的会话ID,您需要在发送第一个请求之前初始化会话。通常,在应用程序中全局解决此问题的最佳方法是在Global.asax中初始化会话,即
protected void Session_Start(Object sender, EventArgs e)
{
// initialize the session object with "something"
Session["Init"] = 0;
}
似乎您正在错误地使用SessiondManager.SaveSessionID: " 不打算从应用程序代码调用此方法 SaveSessionID方法将会话标识符存储在URL(使用无cookieless会话状态时)或非过期会话cookie中。 "
基本上你是想在别人的会话中设置变量?@user1711409你的更新与你原来的问题没有多大变化。为什么要尝试更改会话id?由于某种原因,当我收到回发时,我的HttpContext.session.SessionID与用户cookie不同。这意味着我无法将数据保存到会话[“test”]并在以后为会话检索数据user@user1711409您正在使用基于cookie的会话状态吗?基于cookie的会话状态谢谢您的评论。是的,我见过这样的问题被解决。但出于某种原因,这对我来说不起作用。我用另一种方式解决了数据持久化的问题+1.寻找有助于他人的解决方案。