ASP.NET Tutorial/Profile/Anonymous Profiles
Enable Anonymous Identification and defines a Profile property that can be modified by anonymous users.
File: Web.Config
<configuration>
<system.web>
<authentication mode="Forms" />
<anonymousIdentification enabled="true" />
<profile>
<properties>
<add
name="numberOfVisits"
type="Int32"
defaultValue="0"
allowAnonymous="true" />
</properties>
</profile>
</system.web>
</configuration>
File: Default.aspx
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
void Page_PreRender() {
lblUserName.Text = Profile.UserName;
lblIsAnonymous.Text = Profile.IsAnonymous.ToString();
Profile.numberOfVisits++;
lblNumberOfVisits.Text = Profile.numberOfVisits.ToString();
}
protected void btnLogin_Click(object sender, EventArgs e) {
FormsAuthentication.SetAuthCookie("Bob", false);
Response.Redirect(Request.Path);
}
protected void btnLogout_Click(object sender, EventArgs e)
{
FormsAuthentication.SignOut();
Response.Redirect(Request.Path);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Show Anonymous Identification</title>
</head>
<body>
<form id="form1" runat="server">
<div>
User Name:
<asp:Label
id="lblUserName"
Runat="server" />
<br />
Is Anonymous:
<asp:Label
id="lblIsAnonymous"
Runat="server" />
<br />
Number Of Visits:
<asp:Label
id="lblNumberOfVisits"
Runat="server" />
<hr />
<asp:Button
id="btnReload"
Text="Reload"
Runat="server" />
<asp:Button
id="btnLogin"
Text="Login"
OnClick="btnLogin_Click"
Runat="server" />
<asp:Button
id="btnLogout"
Text="Logout"
OnClick="btnLogout_Click"
Runat="server" />
</div>
</form>
</body>
</html>
Migrating Anonymous Profiles
MigrateAnonymous event handler automatically copies the values of all anonymous Profile properties to the user"s current authenticated profile.
File: Global.asax
<%@ Application Language="C#" %>
<script runat="server">
public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args)
{
ProfileCommon anonProfile = Profile.GetProfile(args.AnonymousID);
foreach (SettingsProperty prop in ProfileBase.Properties)
Profile[prop.Name] = anonProfile[prop.Name];
ProfileManager.DeleteProfile(args.AnonymousID);
AnonymousIdentificationModule.ClearAnonymousIdentifier();
}
</script>
Turning on anonymous capabilities personalization properties
<configuration>
<system.web>
<profile>
<properties>
<add name="FirstName" type="System.String" />
<add name="LastName" type="System.String" />
<add name="LastVisited" type="System.DateTime" allowAnonymous="true" />
<add name="Age" type="System.Integer" />
<add name="Member" type="System.Boolean" />
</properties>
</profile>
<authentication mode="Windows" />
</system.web>
</configuration>