`
wyf
  • 浏览: 433383 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

ASP.NET 2.0(C#)- Profile(存储用户配置)

阅读更多

介绍
ASP.NET 2.0 中的存储用户配置功能使您可以定义并存储要在整个应用程序中使用的基于用户的设置。而且,在用户未登录时,可以将这些设置存储在匿名配置文件中,然后在将来某个时间将其迁移到登录用户的配置文件中。


关键
1、配置<system.web>元素下的<profile>元素;如果需要支持匿名的话则还需要配置<system.web>元素下的<anonymousIdentification>元素。示例如下,仅为说明

 <profile enabled="true" defaultProvider="SqlProfileProvider" inherits="CustomProfile">
      <providers>
        <add name="SqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
             connectionStringName="SqlConnectionString"
             applicationName="/" />
      </providers>
      <properties>
        <add name="Name" />
        <add name="Color" type="System.Drawing.Color" />
        <group name="Group">
          <add name="Collection" type="System.Collections.ArrayList" />
          <add name="Price" type="int" defaultValue="100" />
        </group>
      </properties>
    </profile>

    <anonymousIdentification
      enabled="true"
      cookieName=".VS2005_ANONYMOUS"
      cookieTimeout="1440"
      cookiePath="/"
      cookieRequireSSL="false"
      cookieSlidingExpiration="true"
      cookieProtection="All"
      cookieless="UseCookies" />
 各属性详细说明参看MSDN,索引处查找“profile 元素”和“anonymousIdentification 元素”


注意:
<profile>元素的inherits属性指定自定义类,该类要继承自ProfileBase

Profile是自动保存的,但是某些复杂类型可能无法自动保存,此时需要设置<profile>元素的automaticSaveEnabled设置为false,要保存的话则调用 Profile 上的 Save 方法即可。要动态取消Profile的自动保存功能的话则需要在 global.asax 中加一个Profile_ProfileAutoSaving事件,示例如下,仅为说明

 void Profile_ProfileAutoSaving(Object sender, ProfileAutoSaveEventArgs e)
    {
        if ((e.Context.Items["CancelProfileAutoSave"] != null) && ((bool)e.Context.Items["CancelProfileAutoSave"] == true))
            e.ContinueWithProfileAutoSave = false;
    }

 在需要取消Profile的自动保存功能的页的代码处如下写

protected void Page_Load(object sender, EventArgs e)
{
  Context.Items["CancelProfileAutoSave"] = true;    
}
 2、通过ProfileManager执行相关任务,如搜索有关所有配置文件、经过身份验证用户的配置文件及匿名用户的配置文件的统计信息,确定在给定时间段内尚未修改的配置文件的数量,根据配置文件的上一次修改日期删除单个配置文件及多个配置文件等


3、将匿名配置文件迁移到经过身份验证的配置文件
在global.asax加一个Profile_MigrateAnonymous事件处理,示例如下,仅为说明

  void Profile_MigrateAnonymous(Object sender, ProfileMigrateEventArgs pe)
    {
      // 获得匿名配置
      ProfileCommon anonProfile = Profile.GetProfile(pe.AnonymousID);

      // 从匿名配置中取值并赋值给经过身份验证的配置
      if (anonProfile.Color != System.Drawing.Color.Empty)
      {
        Profile.Color = anonProfile.Color;
      }
        
      // 从数据库中删除匿名配置
      ProfileManager.DeleteProfile(pe.AnonymousID);
        
      // 清除与某个会话关联的匿名 Cookie 或标识符
      AnonymousIdentificationModule.ClearAnonymousIdentifier();  
    }
 示例

App_Code/CustomProfile.cs

using System;
using System.Data;
using System.Configuration;
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;

using System.Web.Profile;

/// <summary>
/// CustomProfile 的摘要说明
/// </summary>
public class CustomProfile : ProfileBase
{
    private string _customName;
    public string CustomName
    {
        get { return (string)base["CustomName"]; }
        set { base["CustomName"] = value; }
    }

    private bool _customSex;
    public bool CustomSex
    {
        get { return (bool)base["CustomSex"]; }
        set { base["CustomSex"] = value; }
    }
}

 web.config

 <profile enabled="true" defaultProvider="SqlProfileProvider" inherits="CustomProfile">
      <providers>
        <add name="SqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
             connectionStringName="SqlConnectionString"
             applicationName="/" />
      </providers>
      <properties>
        <add name="Name" />
        <add name="Color" type="System.Drawing.Color" />
        <group name="Group">
          <add name="Collection" type="System.Collections.ArrayList" />
          <add name="Price" type="int" defaultValue="100" />
        </group>
      </properties>
    </profile>

 Profile/Test.aspx

<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Test.aspx.cs"
    Inherits="Profile_Test" Title="存储用户配置测试" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <asp:Label ID="lbl" runat="Server" />
</asp:Content>

 Profile/Test.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 Profile_Test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // 一看就懂
        Profile.Name = User.Identity.Name;
        Profile.Color = System.Drawing.Color.AliceBlue;
        Profile.Group.Collection.Clear();
        Profile.Group.Collection.Add("冰棍");
        Profile.Group.Collection.Add("瓜子");
        Profile.Group.Price = 999999;

        Profile.CustomName = User.Identity.Name;
        Profile.CustomSex = true;



        lbl.Text = "Name:" + Profile.Name + "<br />";
        lbl.Text += "Color:" + Profile.Color.ToString() + "<br />";
        foreach (string s in Profile.Group.Collection)
        {
            lbl.Text += "商品有:" + s + "<br />";
        }
        lbl.Text += "价格:" + Profile.Group.Price + "<br />";

        lbl.Text += "自定义类名字:" + Profile.CustomName + "<br />";
        lbl.Text += "自定义类姓名:" + Profile.CustomSex;
    }
}
 用“abc”这个用户登录后的运行结果

Name:abc
Color:Color [AliceBlue]
商品有:冰棍
商品有:瓜子
价格:999999
自定义类名字:abc
自定义类姓名:True


注:需要用aspnet_regsql配置数据库

分享到:
评论

相关推荐

    ASP.net 2.0的web2.0应用-blog、Tags、Rss、Xml和ajax mail

    在ASP.NET 2.0中,开发者可以利用内置的 Membership 和 Profile 功能来创建用户系统,同时结合自定义的数据模型和控件实现文章发布、评论、分类等功能。此外,可以利用Master Pages和User Controls增强页面的重用性...

    精通ASP.net 2.0 课件

    ASP.NET 2.0提供了Profile和Personalization功能,允许开发者存储和检索用户的个性化信息,如首选项、设置等。Profile允许自定义用户配置文件,而Personalization则提供了站点级别的个性化设置,如页面视图、收藏夹...

    ASP.NET2.0电子商务开发实战

    通过"ASP.NET2.0电子商务开发实战"的学习,开发者不仅可以掌握ASP.NET 2.0的关键技术和实践应用,还能了解到如何将这些技术应用到实际的电子商务场景中,从而构建出功能完善、用户体验优良的在线商店。"Beginning ...

    使用ASP.NET 2.0 Profile存储用户信息

    许多ASP.NET应用程序需要跨访问的用户...但如今,使用 ASP.NET 2.0的Profile对象,这个过程变得异常简单。Stephen Walther将验证该对象,并向你展示如何使用Profile来跟踪用户属性、创建一个购物篮,及其他一些例子。

    ASP.NET 2.0 AJAX Hands-On Lab

    ASP.NET的Profile服务允许开发者存储和检索用户的个人偏好设置,从而提供更个性化的体验。结合AJAX技术,可以实现动态加载用户的个性化设置。 - **4.7 创建自定义ASP.NET AJAX控件扩展器** 开发者可以根据需求...

    ASP.NET 2.0电子商务高级编程(C#2005版)

    本资源聚焦于ASP.NET 2.0在电子商务领域的高级应用,特别是结合C# 2005语言进行编程。下面将详细解析其中涉及的关键知识点。 1. **分层架构**:书中的设计采用了微软推荐的分层架构,这种架构通常包括表现层(UI)...

    asp.net2.0网络编程从入门到精通(源代码)

    - Profile:创建用户配置文件,存储个性化设置。 5. **ADO.NET与数据库交互** - 数据访问层:创建连接字符串,执行SQL语句,了解DataSet、DataTable和DataAdapter的使用。 - LINQ to SQL:学习使用LINQ简化...

    ASP.NET2.0典型模块(1-16)

    HandlerSample 图片的处理程序以及防止盗链的方法 FileHandlerSample 文件下载示例 &lt;br&gt;第13章(\C13) 示例描述:本章示例展现了在ASP.NET2.0中实现在线服务的功能。 OnlineService 复杂的...

    ASP.NET 2.0数据库通用模块开发与系统移植2

    首先,ASP.NET 2.0引入了ASP.NET Membership、Roles和Profile等新特性,它们为开发者提供了强大的用户管理和授权功能。Membership允许创建、验证和管理用户账户,Roles可以对用户进行分组并分配权限,Profile则用于...

    ASP.NET 2.0考题相关知识总结

    在ASP.NET 2.0中,开发人员可以选择多种编程语言进行网页开发,主要包括:Visual Basic .NET (VB.net)、C# .NET (C#.net)、J# .NET (J#.net)以及C++ .NET (C++.net)。这些语言提供了丰富的语法特性和面向对象编程的...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    2.ASP.NET.2.0.高级编程(第4版) [1/7] 原书名: Professional ASP.NET 2.0 原出版社: Wrox 作者:(美)Bill Evjen, Scott Hanselman, Farhan Muhammad [同作者作品] [作译者介绍] 译者: 李敏波[同译者作品] ...

    ASP.NET2.0高级编程(第4版)1/6

    本书全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述了2.0版中的每个新特性。书中提供了大量的实例,可帮助读者快速掌握如何在.NET平台下开发功能强大的ASP.NET应用程序。本书适合有一些基础的ASP...

    一个XML做为数据库的留言本程序,利用了Asp.net2.0中的DataList、MemberShip等控件 该程序采用面相对象开发

    XML留言板程序是一个基于Asp.net 2.0的Web应用程序,它使用XML文件作为数据存储,而不是传统的关系型数据库。这种设计方式具有轻量级、易于理解和操作的优点,尤其适用于小型项目或者对数据库需求不高的场景。以下是...

    Memcache客户端MemcachedProviders for .net 2.0 实例

    在.NET环境中,这个库作为一个数据提供者,允许开发者将缓存策略无缝地整合到ASP.NET应用程序的Session、Cache和Profile管理中。 1. **安装与配置**: - 首先,你需要下载并安装MemcachedProviders库。这通常通过...

    微软ASP.net教程_9

    5. Profile缓存:用户配置信息可以被缓存,提高读取速度。 6. QueryString缓存:根据查询字符串参数缓存不同版本的页面。 7. 自定义缓存策略:开发者可以通过实现ICacheDependency接口创建自定义依赖,以便在依赖...

    ASP.net开发大全

    2. Profile:ASP.NET 2.0中的Profile允许开发者存储和检索用户的个性化设置。书中会介绍如何使用Profile来定制用户体验。 五、实战与项目开发 除了理论知识,书中还会提供实际案例和项目开发经验,帮助读者将所学...

    ASP.2.0宝典源代码(第一部份)

    2. **个性化用户配置技术**:“14 个性化用户配置技术”可能涉及到用户配置文件(UserProfile)的使用,这是 ASP.NET 2.0 中的一项重要特性,用于存储和管理用户的个性化设置,使得开发者可以为用户提供定制化的体验...

    asp.net网站访问统计模块安装和部署

    在.NET 2.0版本中,ASP.NET引入了诸如ASP.NET AJAX、Master Pages和Profile等改进,使开发更加高效便捷。 访问统计模块的安装通常涉及以下步骤: 1. **选择统计模块**:市场上有许多开源或商业的ASP.NET访问统计...

    NET 2.0的C#MySQL配置文件提供程序

    配置文件提供程序是ASP.NET的一项功能,它允许开发者自定义应用程序如何与数据存储进行交互,特别是在处理用户配置数据时。 描述中提到的“基于MySQL的配置文件提供程序”是专门设计用来与MySQL数据库进行通信的...

    数据访问技术系列课程(9):.NET Framework 2.0中的数据访问新特性

    - **ASP.NET Profile**:支持用户配置文件的存储和检索,便于个性化设置的实现。 - **ASP.NET Providers**:一套可扩展的接口,用于处理用户身份验证、角色、配置文件等数据。 通过以上知识点的学习,开发者能够...

Global site tag (gtag.js) - Google Analytics