【发布时间】:2020-12-14 18:56:19
【问题描述】:
为了描述应用程序,它有一个默认页面,它将从请求标头中检查用户角色,然后将用户 ID 分配到会话中并重定向到相应的页面。在其他每个页面中,它会检查会话是否有值,如果没有,则重定向默认页面。
这已经在我的开发环境中进行了测试,并且可以正常工作。但是,当我在 IIS(AWS EC2 环境)中托管它时。它开始表现得很奇怪。如果应用程序的绑定坚持默认。我可以在服务器中使用 http://localhost:26943/ 毫无问题地浏览它。
但是,当我将绑定更改为主机名并使用http://testing.com/ 浏览时,我发现包含用户 ID 的会话为空。
我尝试了几种方法,包括:
- 在 Global.asax 中添加 Session["init"] = 0
- 在 web.config 中更改 cookieless=true
- 将 sessionState 的模式更改为“StateServer”
- 重定向到“~/page.aspx”而不是“page.aspx”
仅更改无 cookie 的方法对我有用,但它会在 URL 中显示会话 ID,我怀疑这是正确的方法。
应用详情:
- .NetFramework 4.8
- 使用 WCF 服务
- 当前会话状态信息为 sessionState mode="InProc" cookieless="false" timeout="60"
- 配置 c:\Windows\System32\Drivers\etc\hosts 添加 127.0.0.1 testing.com
- 使用 IE 11 测试
【问题讨论】:
-
testing.com 属于你吗?
-
你使用 Response.redirect() 重定向吗? Response.redirect 可能会终止线程并导致会话丢失。在其中添加一个 false 将避免此问题,例如:Response.redirect(“another page”, false)。另一个建议是使用其他浏览器而不是 IE。
-
嗨@JalpaPanchal,已经用 Chrome 和 Firefox 进行了测试,它们似乎工作正常。 windows server 中的 IE 会不会有这个问题?
标签: c# asp.net amazon-web-services iis