用於儲存與使用者有關的資料,維護應用程式狀態。Profile對象提供一個建立強型別和持久化方式的工作階段狀態的方法。
以Profile.ShoppingCart.Add();
Profile.Save();
的執行流程為例
首先設定檔部分代碼如下:
Code
<profile automaticSaveEnabled="false" defaultProvider="ShoppingCartProvider">
<providers>
<add name="ShoppingCartProvider" connectionStringName="SQLProfileConn" type="PetShop.Profile.PetShopProfileProvider" applicationName=".NET Pet Shop 4.0"/>
</providers>
<properties>
<add name="ShoppingCart" type="PetShop.BLL.Cart" allowAnonymous="true" provider="ShoppingCartProvider"/>
</properties>
</profile>
根據設定檔,屬性也即需要儲存的類型為PetShop.BLL.Cart,自訂使用者配置提供者為ShoppingCartProvider,用於儲存PetShop.BLL.Cart類中的相關資訊。由於ShoppingCartProvider為自訂使用者配置提供者,需要繼承自System.Web.Profile.ProfileProvider,重寫父類中的一些方法,如Initialize(),GetPropertyValues(),SetPropertyValues()等等。
啟動Web應用程式,ASP.NET會根據設定檔中的相關配置建立一個ProfileCommon類的執行個體,該類繼承自System.Web.Profile.ProfileBase類。根據ProfileCommon類的部分代碼
Code
public virtual PetShop.BLL.Cart ShoppingCart {
get {
return ((PetShop.BLL.Cart)(this.GetPropertyValue("ShoppingCart")));
}
set {
this.SetPropertyValue("ShoppingCart", value);
}
}
先調用重寫的Initialize()方法,用來設定提供者執行個體的選項與初始值。然後根據(this.GetProertyValue("ShoppingCart")),調用GetPropertyValues方法,用來擷取相關屬性類型PetShop.BLL.Cart中的有關資訊(儲存在資料庫中)後,進行強型別轉換(PetShop.BLL.Cart)(this.GetProertyValue("ShoppingCart")),然後調用Cart.Add()方法。
調用Profile.Save()方法後,程式調用ShoppingCartProvider中重寫的方法SetPropertyValue()來完成PetShop.BLL.Cart中相關資訊的儲存。
轉至:http://www.cnblogs.com/sunny0311/archive/2008/09/22/1296241.html