C# 重定向页面后会话丢失

C# 重定向页面后会话丢失,c#,asp.net,amazon-web-services,iis,C#,Asp.net,Amazon Web Services,Iis,为了描述该应用程序,它有一个默认页面,其中它将从请求头检查用户角色,然后将用户id分配到会话中,并重定向到相应的页面。在每隔一个页面中,它将检查会话是否有值,如果没有,则将重定向默认页面 这已经在我的开发环境中进行了测试,并且可以正常工作。但是,当我在IIS(AWS EC2环境)中托管它时。它开始表现得很奇怪。如果应用程序的绑定为默认值,则坚持使用默认值。我可以在服务器上使用http://localhost:26943/ 没有问题 但是,当我将绑定更改为hostname并使用浏览时,我发现包含

为了描述该应用程序,它有一个默认页面,其中它将从请求头检查用户角色,然后将用户id分配到会话中,并重定向到相应的页面。在每隔一个页面中,它将检查会话是否有值,如果没有,则将重定向默认页面

这已经在我的开发环境中进行了测试,并且可以正常工作。但是,当我在IIS(AWS EC2环境)中托管它时。它开始表现得很奇怪。如果应用程序的绑定为默认值,则坚持使用默认值。我可以在服务器上使用http://localhost:26943/ 没有问题

但是,当我将绑定更改为hostname并使用浏览时,我发现包含用户ID的会话是空的

我尝试了几种方法,包括:

  • 在Global.asax中添加会话[“init”]=0
  • 在web.config中更改cookieless=true
  • 将sessionState的模式更改为“StateServer”
  • 重定向到“~/page.aspx”而不是“page.aspx”
  • 只有change cookieless方法对我有效,但它会在URL中显示会话ID,我怀疑这是正确的方法

    应用程序详情:

    • .NetFramework 4.8
    • 使用WCF服务
    • 当前会话状态信息是会话状态mode=“InProc”cookieless=“false”timeout=“60”
    • 已配置c:\Windows\System32\Drivers\etc\hosts以添加127.0.0.1 testing.com
    • 使用IE11进行测试

    如果您需要更多信息,请告诉我。急需帮助

    我认为您需要使用下面的代码行

    HttpContext.Current.Session["myvariable"]
    

    我希望这能对您有所帮助。

    因为AWS在服务器场上? 那么进程内会话将是非常脆弱和有问题的。这些庞大的云系统将多次弹出您的web服务器,这是关于下一页将从何而来的猜测。是否跨IIS服务器的不同实例提供页面

    您将丢失会话值。如前所述,即使一些未处理的代码错误也会导致重新设置应用程序池。所有这些问题加起来都会导致会话的频繁丢失

    我建议您采用基于SQL server的会话管理。这将消除大量可能导致会话()重新设置的问题。我喜欢在过程中。基于内存的速度很快,而且由于您没有编写下一个Facebook,因此典型的服务器负载几乎为零(同样,这有利于使用进程内会话)。但是,由于您有一个服务器场,并且一些应用程序错误将成为问题?采用基于SQL server的会话,99(如果不是100%)的会话()将重新设置,丢失将消失


    由于您使用的是AWS,您对运行的虚拟机几乎没有控制权,而且他们的幕后“结构”控制器可能会因故障安全和冗余问题而运行服务器的多个副本,因此这一建议更为合理。所以,采用基于SQL的会话管理。

    testing.com属于您吗?是否使用Response.redirect()重定向?Response.redirect可能会终止线程并导致会话丢失。在其中添加false可以避免这个问题,比如:Response.redirect(“另一个页面”,false)。另一个建议是使用其他浏览器,而不是IE.hi@JalpaPanchal,它们已经在Chrome和Firefox上进行了测试,并且似乎可以正常工作。windows server中的IE可能对此有问题吗?您可以参考此Hi,我是否可以知道您的意思是将此添加到全局中。asax的会话\u start或我应该在尝试访问会话时使用此选项?