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"这样的地址;
评论(0)
暂无评论。