不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
ASP.NET 2.0之无Cookie会话
编辑:dnawo 日期:2009-01-15
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]:
引用内容
"y0iccsaya2ix0m45n3aaxe55"即为会话ID。要实现无Cookie会话非常简单,只需在站点配置文件system.web节点中添加下边的子节点即可:
这样Web应用程序中所有使用相对路径的链接都将自动被扩展,如下例子:
Default.aspx:
Default.aspx.cs:
细心的你可能发觉了,使用绝对路径的链接地址都没有被扩展,每次打开这些链接将产生新的会话ID,解决方法是使用Response.ApplyAppPathModifier方法来处理绝对地址,例如[2]:
这样就可以了!
[1].测试发现在VS2005中会话ID都加在文件名前(最后一个/前),而VS2008中会话ID都加在域名后(第一个/后);
[2].ApplyAppPathModifier不会处理"http://www.mzwu.com/default.aspx"这样的地址;

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>
<!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;
}
}
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 | 引用: 0 | 查看次数: 3849
发表评论
请登录后再发表评论!