以编程方式启用/禁用ASP.NET会话状态?

时间:2010-02-24 16:28:45

标签: asp.net session cookies

我们的一位客户不希望在其网站的公共部分上有任何cookie。当然,对于后端工具,我们广泛使用会话状态,但对于站点的公共部分来说并不是必需的。

是否可以关闭匿名访问者的会话状态,但是为登录用户保留会话状态?

2 个答案:

答案 0 :(得分:1)

总之......没有。

但是,您可以在逻辑上将应用程序分离到与用户无缝连接的不同应用程序中。

即:

wwwroot \ myapp(公共网站,没有cookies)
wwwroot \ myapp \ private(虚拟目录,实际上是一个不同的应用程序)

这当然要求公共部分和登录用户之间没有任何公共部分的行为不同。

答案 1 :(得分:1)

如果您只想避免静态文件(图片/ javascript / css等)的cookie开销,您可以设置一个无Cookie域并从那里提供您的内容,这里有一个指南:http://www.ravelrumba.com/blog/static-cookieless-domain/ < / p>

这可能会使cookie流量减少90%

您可以使用相同的原则将登录用户定向到他们登录并设置Cookie的其他域。

如果他们不想要cookie,因为这些cookie是第三方cookie(该网站是从不同网站上的iframe托管)而IE不允许这样做,你可以使用P3P来说服IE很酷: http://www.w3.org/P3P/

如果他们原本不想要cookie,那么你有点不走运,虽然Asp.Net确实支持无cookie会话,但即使在ssl(在url中传输会话ID)它们也不安全有其他问题(丑陋的网址,WCF投入合适等)如果客户端对cookie有宗教信仰,那么这可能是一个可行的选择