Profile(存储用户配置)

转载 2007年09月25日 00:17:00
重新过一遍ASP.NET 2.0(C#)(7) - Profile(存储用户配置)


作者:webabcd


介绍
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 _customName; }
        
set { _customName = value; }
    }


    
private bool _customSex;

    
public bool CustomSex
    
{
        
get return _customSex; }
        
set { _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(C#)(7) - Profile(存储用户配置)

 [源码下载]重新过一遍ASP.NET 2.0(C#)(7) - Profile(存储用户配置)作者:webabcd介绍ASP.NET 2.0 中的存储用户配置功能使您可以定义并存储要在整个应用程序中...
  • zhengfei82
  • zhengfei82
  • 2007年12月10日 08:45
  • 273

四种最基本的配置文件(profile)

1.通用访问配置文件(Generic Access Profile, GAP)     GAP是所有其他配置文件的基础,它定义了在蓝牙设备间建立基带链路的通用方法.除此之外,GAP还定义了下列内容:...
  • zhaoshuzhaoshu
  • zhaoshuzhaoshu
  • 2014年08月05日 13:56
  • 2422

温故知新ASP.NET 2.0(C#)(7) - Profile(存储用户配置)

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

用户默认设置 Settings Bundle

Settings Bundle是应用程序中的一组特殊文件,用于告诉ios自带的settings应用,该应用程序希望通过Settings应用来收集程序参数。主要用于 1、应用程序有少量的数据用于保存,并...
  • xiaonaiping061
  • xiaonaiping061
  • 2015年08月26日 14:44
  • 633

【Spring】Spring常用配置-Profile

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自【大学之旅_谙忆的博客】 分析对于Profile先做一个简单的介绍: 单讲profile就是一组配置,不同p...
  • qq_26525215
  • qq_26525215
  • 2016年11月14日 21:54
  • 1851

/etc/profile配置文件的详解

1./etc/profile ,~/.bashrc, ~/.bash_file, /etc/profile.d 这几个文件的区别是啥,可能很多新人,...
  • liuyongvs2009
  • liuyongvs2009
  • 2014年08月26日 21:50
  • 3959

在spring中通过Profile配置不同环境下log配置

一般我们在开发的时候,希望log打到控制台上,而在发布的时候,希望打到文件里面。在spring里面可以通过profile进行切换。 在application.yml里面,每个profile增...
  • sinat_36735108
  • sinat_36735108
  • 2016年12月07日 10:58
  • 593

spring profile多配置文件的切换

快捷切换多环境的配置文件读取
  • li304749541
  • li304749541
  • 2017年02月09日 14:31
  • 975

iOS Provisioning Profile(配置文件)与Code Signing详解

关于开发证书配置(Certificates & Identifiers & Provisioning Profiles),相信做iOS开发的同学没少被折腾。对于一个iOS开发小白、半吊子(比如像我自己...
  • love_Coders
  • love_Coders
  • 2015年08月03日 11:54
  • 3507

Maven根据Profile读取不同配置环境配置文件

Maven profile实现不同环境读取不同配置文件
  • xiaojiesu
  • xiaojiesu
  • 2016年07月09日 16:39
  • 15531
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Profile(存储用户配置)
举报原因:
原因补充:

(最多只允许输入30个字)