用于存储与用户有关的数据,维护应用程序状态。Profile对象提供一个创建强类型和持久化方式的会话状态的方法。
以Profile.ShoppingCart.Add();
Profile.Save();
的执行流程为例
首先配置文件部分代码如下:
<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类的部分代码
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