Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在同一操作中保存会话ID和更新会话变量_C#_Asp.net_Asp.net Mvc_Session Variables_Sessionid - Fatal编程技术网

C# 在同一操作中保存会话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"; 似乎会话[“测试”]已保存到旧会话 更

由于我是新手,我可能会使用错误的方法,但我的问题是:

我从第三方获得了一个到动作的异步post。在那篇文章中,我得到了一个用户sessionId。如何将sessionvariables保存到该Id

如果我喜欢这个:

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.寻找有助于他人的解决方案。