日期:2014-05-18  浏览次数:21495 次

C#_Profile 配置
关键

  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" />

<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执行相关任务,如搜索有关所有配置文件、