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揭祕讀書筆記七——使用使用者配置檔案ProfileASP.NET筆記
- Nebula Storage 2.0 儲存格式
- 關於 Swoft 2.0 版本用 Redis 儲存 session 時配置問題RedisSession
- asp.net儲存圖片ASP.NET
- c# 冷儲存示例C#
- C#開發中使用配置檔案物件簡化配置的本地儲存C#物件
- 儲存-配置多路徑
- 配置儲存和工具
- C# 儲存Word模板 【XML】C#XML
- 分散式儲存ceph 物件儲存配置zone同步分散式物件
- ASP.NET中使用Cookie儲存使用者名稱和密碼 (轉)ASP.NETCookie密碼
- [譯]ASP.NET Core 2.0 機密配置項ASP.NET
- [譯]ASP.NET Core 2.0 全域性配置項ASP.NET
- k8s之資料儲存-配置儲存K8S
- C#呼叫 oracle儲存過程C#Oracle儲存過程
- C#呼叫Oracle儲存過程C#Oracle儲存過程
- C# 記事本儲存logC#
- vCenter6.7 儲存配置
- openfiler配置rac共享儲存
- docker儲存配置與管理Docker
- Web 2.0的個性化儲存需求薦Web
- 輕鬆加密ASP.NET 2.0 Web程式配置資訊加密ASP.NETWeb
- c#呼叫儲存過程小記C#儲存過程
- EMC-AX4儲存配置
- redhat as 4配置ISCSI共享儲存Redhat
- nas網路儲存如何配置
- 使用SQL Server儲存ASP.NET Session變數SQLServerASP.NETSession變數
- 【C#學習筆記】儲存檔案C#筆記
- C# 截圖並儲存為圖片C#
- ORACLE profile 優化配置Oracle優化
- Android儲存(3)– 裝置配置Android
- solaris安裝RAC的儲存配置
- Linux中,如何配置iSCSI儲存?Linux
- redis儲存使用者登入資訊Redis
- SVN 儲存使用者資訊刪除
- RAC歸檔配置方案:使用NFS共享儲存儲存歸檔檔案NFS
- asp.net利用儲存過程分頁程式碼ASP.NET儲存過程
- Profile配置和載入配置檔案