【发布时间】:2017-10-14 19:29:49
【问题描述】:
我们有一个现有的 ASP.NET Web 窗体应用程序,其中包含许多不同的 Visual Studio Web 项目。所有 Web 项目都配置为在相同的 localhost 根路径下运行(例如 http://localhost:12345/main/projectspecificname)。我们使用状态服务器来保存会话数据,cookieless 设置为 false。
这种方法在使用 VS2012 和 ASP.NET 开发服务器时运行良好。但是,当我们尝试从 VS2015 + IIS Express 运行相同的应用程序时,我们发现当不同 Web 项目之间发生重定向时,它无法保留会话数据。例如,当从 project1/login.aspx 调用 Response.Redirect("project2/index.aspx") 时,从 project2/index.aspx 中的 Page_Load 事件 我看到 session 变量丢失了它上面携带的所有数据(即 Session.Count == 0)。针对 ASP.NET 开发服务器的相同调试过程返回大于 0 的计数。同样,对于 IIS Express,所有不同的项目都配置为使用项目 URL,如 http://localhost:12345/main/projectspecificname。
我搜索了一下,发现这篇 SO 帖子 IIS Express doesn't keep session data 提到了在 VS 中禁用浏览器链接的解决方案,但这不适用于我的情况。我只是想知道我们是否错过了一些设置,或者这种方法不适用于 IIS Express。任何帮助表示赞赏。
【问题讨论】:
-
浏览器是否将会话 cookie 提供给两个站点?
-
@JohnWu 只有一个站点。在 http 请求中,我看到两个页面都发布了相同的会话 ID。
标签: c# asp.net visual-studio session iis