C# 为什么每次访问同一页ASP.Net时HttpContext.Current.Session都在更改

C# 为什么每次访问同一页ASP.Net时HttpContext.Current.Session都在更改,c#,asp.net,twitter,C#,Asp.net,Twitter,下面是一个场景 我有一个页面,比如login.aspx有一个名为login的按钮,当我检查SessionID时,该按钮的点击事件会显示一个特定的值,例如“a” 现在我正在调用某个外部页面,该页面然后再次调用此页面 例如,一旦我点击登录按钮,我就会调用一个twitter应用程序,当用户授权它时,我会被重定向回同一个页面,但现在当我访问SessionID时,它是一个新ID 我不知道为什么会发生这种情况,我只想拥有相同的SessionID您没有多个web服务器,是吗 如果是这样,并且您没有使用共享会话

下面是一个场景

我有一个页面,比如login.aspx有一个名为login的按钮,当我检查SessionID时,该按钮的点击事件会显示一个特定的值,例如“a”

现在我正在调用某个外部页面,该页面然后再次调用此页面

例如,一旦我点击登录按钮,我就会调用一个twitter应用程序,当用户授权它时,我会被重定向回同一个页面,但现在当我访问SessionID时,它是一个新ID


我不知道为什么会发生这种情况,我只想拥有相同的SessionID

您没有多个web服务器,是吗

如果是这样,并且您没有使用共享会话状态提供程序,那么您可能会看到这种行为

编辑

好的,下一个问题

Twitter授权返回的URL是否使用完全相同的域名

例如,如果您的应用程序正在上运行,并且返回的URL为

编辑2:是吗

当您从127.0.0.1上的Twitter应用重定向回时,ASP.NET会话cookie不会传递回web服务器,因为域不同

您需要运行应用程序的域来匹配Twitter回调URL


将Twitter回调URL重新配置为localhost:1234,我认为您应该可以。

是否向会话添加任何数据?您需要这样做才能使会话ID“粘住”。

不,我正在我的开发人员计算机上运行此程序,默认服务器是Visual Studio IDE,开发人员计算机正在运行,Twitter回调URL是,因为Twitter不接受localhost作为URL的有效输入。是否有任何变通方法,以便我可以在dev env中测试相同的方法。在实际检查生产/现场环境之前,请以另一种方式进行检查。让应用程序在127.0.0.1:1234运行是的。如果会话中没有存储任何内容,则每次都会获得一个新id+1.