2009-09-15 130 views
1

我正在使用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。)ASP.Net会话问题

我有这样的困惑,因为在ASPX,我们可以很容易地从ASP.Net Session对象访问会话状态,但对于html页面,我不是如何维护会话。

另一个困惑是,我觉得会是ASP.Net,而不是HTML页面的一个概念,所以我觉得会保持只在aspx页面。如果我错了,请纠正我。 :-)

回答

3

不,会话不会丢失。 ASPX - > HTML - > ASPX还行。

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

当会话被创建发送到浏览器(基本上,它用作一个查找键入服务器侧会话逻辑)的cookie。不管目标是什么,从浏览器实例到同一个域的每个请求都将包含cookie。

要查看此创建.aspx页的使用会话(例如Session["x"] = "foo";),使页面参考几个其他资源,如图像或脚本。

如果再使用一个HTTP流量监控,如FiddlerCharles Proxy(与所有浏览器都工作),你会看到包含在每个请求的cookie中。

.aspx页面将与Set-Cookie:头回应,随后的浏览器请求将包括Cookies:头。

+0

谢谢!我已经证实你是正确的!我在这里有一个相关的问题,如果你可以看看,很感激。 http://stackoverflow.com/questions/1426117/forms-authentication-security-risk – George2 2009-09-15 10:03:17

+0

提琴手工作正常,任何Web浏览器,顺便说一句。 www.fiddler2.com/fiddler/help/hookup。asp – EricLaw 2009-09-15 13:44:03

+0

@Eric:谢谢你的澄清,我会调整答案。 – devstuff 2009-09-15 23:16:23

2

通常情况下,HTML页面有服务器端功能用不上,因为他们只是呈现出完全一样的。默认情况下,它们不是由ASP.NET引擎提供的,所以您实际上不能在HTML页面中执行任何.NET工作。

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

+0

感谢彼得,我想和您确认,如果从1.aspx用户遍历到2.sapx到3.html到4.aspx,然后在3.html点,会话变量都将丢失,和在4.aspx之前的会话信息无法检索? – George2 2009-09-15 09:28:00

+0

George2。会话信息不会丢失,因为它与用户会话一起存在,并且与请求HTML页面的用户无关。 – 2009-09-15 10:13:04

1

正如devstuff所说,会话不会丢失,但是您不能访问html页面中会话的值,因为会话值驻留在服务器上,并且服务器上的html为100%静态侧。

如果需要使用HTML session里面,你应该把它转换为ASPX,但这的确是并不难,HTML标记是ASPX也是有效的。

+0

感谢您的咨询! – George2 2009-09-15 10:03:59