ASP.NET 2.0之无Cookie会话

ASP.NET 2.0中提供了4种身份验证方式:Windows验证、Passport验证、None验证和Forms验证。在多数的Web应用程序中,我们最常使用的Forms身份验证。在ASP.NET 1.X中Forms身份验证主要是基于Cookie来实现的,然而并不是所有浏览器都支持Cookie,并不是所有支持Cookie的浏览器都会启用Cookie,因此,在ASP.NET 2.0引入了无Cookie会话来保障Forms验证方式的正常使用。 无Cookie会话实现的是把会话ID的存储位置从Cookie移到URL中来,例如[1]:

引用内容 引用内容
http://www.mzwu.com/(S(y0iccsaya2ix0m45n3aaxe55))/Default.aspx

"y0iccsaya2ix0m45n3aaxe55"即为会话ID。要实现无Cookie会话非常简单,只需在站点配置文件system.web节点中添加下边的子节点即可:

<sessionState cookieless="true"/>

这样Web应用程序中所有使用相对路径的链接都将自动被扩展,如下例子:

Default.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无Cookie会话-Mzwu.Com</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />
        <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Default.aspx">相对路径</asp:HyperLink><br />
        <asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl="/Default.aspx">绝对路径</asp:HyperLink><br />
    </form>
</body>
</html>

Default.aspx.cs:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = Session.SessionID;
    }
}

细心的你可能发觉了,使用绝对路径的链接地址都没有被扩展,每次打开这些链接将产生新的会话ID,解决方法是使用Response.ApplyAppPathModifier方法来处理绝对地址,例如[2]:

HyperLink2.NavigateUrl = Response.ApplyAppPathModifier("/Default.aspx");

这样就可以了!

[1].测试发现在VS2005中会话ID都加在文件名前(最后一个/前),而VS2008中会话ID都加在域名后(第一个/后);
[2].ApplyAppPathModifier不会处理"http://www.mzwu.com/default.aspx"这样的地址;

上一篇: DedeCms广告调用
下一篇: 说说动软的2种架构和3种数据层
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 3627
发表评论
登录后再发表评论!