【问题标题】:ASP.Net session issueASP.Net 会话问题
【发布时间】:2009-09-15 09:18:30
【问题描述】:

我正在使用 VSTS 2008 + C# + .Net 3.5 + IIS 7.0 + ASP.Net。我想知道我的网站中是否同时有 aspx 页面和 html 页面,会话变量是否仅在 aspx 页面中传输?或者会话可以在 aspx 和 html 页面中传输? (转移我的意思是用户点击我网站内的链接来遍历我的网站,例如我的网站中有1.aspx,1.html和2.aspx,1.aspx有链接到1.html,当用户点击时1.aspx中的1.html链接到1.html,我的意思是转移到1.html。)

我有这种困惑,因为在 aspx 中我们可以轻松地从 ASP.Net Session 对象访问会话状态,但对于 html 页面,我不是如何维护会话。

另一个困惑是,我认为 session 是 ASP.Net 的概念,而不是 html 页面,所以我认为 session 只在 aspx 页面中维护。如果我错了,请纠正我。 :-)

【问题讨论】:

    标签: c# asp.net .net visual-studio-2008 iis-7


    【解决方案1】:

    不,会话不会丢失。 ASPX -> HTML -> ASPX 没问题。

    在上面的序列中,对 HTML 页面的请求也会收到 cookie,但会被忽略。

    在创建 Session 时,会向浏览器发送一个 cookie(本质上,它充当服务器端 Session 逻辑的查找键)。从该浏览器实例到同一域的每个请求都将包含 cookie,而与目标无关。

    要查看此内容,请创建一个使用 Session(例如 Session["x"] = "foo";)的 .aspx 页面,并让该页面引用一些其他资源,例如图像或脚本。

    如果您随后使用 HTTP 流量监控器,例如 FiddlerCharles Proxy(两者都适用于所有浏览器),您将看到每个请求中都包含 cookie。

    .aspx 页面将以 Set-Cookie: 标头响应,随后的浏览器请求将包含 Cookies: 标头。

    【讨论】:

    • 谢谢!我已经验证你是对的!我在这里有一个相关的问题,如果你能看一下,不胜感激。 stackoverflow.com/questions/1426117/…
    • Fiddler 可以在任何网络浏览器上正常工作,顺便说一下。 www.fiddler2.com/fiddler/help/hookup.asp
    • @Eric:感谢您的澄清,我会调整答案。
    【解决方案2】:

    通常,HTML 页面无法访问服务器端功能,因为它们只是按原样呈现。默认情况下,它们不由 ASP.NET 引擎提供服务,因此您实际上无法在 HTML 页面中执行任何 .NET 工作。

    如果您想使用会话,您应该使用 ASPX 页面之类的东西。

    【讨论】:

    • 谢谢彼得,我想和你确认一下,如果用户从 1.aspx 到 2.sapx 再到 3.html 到 4.aspx,那么在 3.html 点,会话变量会丢失,并且在4.aspx中无法检索到以前的会话信息?
    • 乔治2。会话信息不会丢失,因为它与用户会话一起存在,并且与请求 HTML 页面的用户无关。
    【解决方案3】:

    正如 devstuff 所说,会话不会丢失,但您无法在 html 页面中访问会话的值,因为会话值存在于服务器上,而 html 在服务器端是 100% 静态的.

    如果你需要在html里面使用session,你应该把它转换成aspx,但这其实并不难,因为html标记在aspx中也是有效的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      相关资源
      最近更新 更多