The ASP.NET Framework provides an alternative to using cookies or Session state to store user information: the Profile object.
The Profile object provides you with a strongly typed, persistent form of session state.
You create a Profile by defining a list of Profile properties in your application root web configuration file.
The ASP.NET Framework dynamically compiles a class that contains these properties in the background.
The following web configuration file defines a Profile that contains three properties: firstName, lastName, and numberOfVisits.
File: Web.Config
<configuration>
<system.web>
<profile>
<properties>
<add name="firstName" />
<add name="lastName" />
<add name="numberOfVisits" type="Int32" defaultValue="0" />
<add name="xmlLastName" type="String" serializeAs="Xml"/>
</properties>
</profile>
</system.web>
</configuration>
When you define a Profile property, you can use any of the following attributes:
name sets the name of the property.
type sets the type of the property.
The type can be any custom type, including a custom component that you define in the App_Code folder.
The default type is string.
defaultValue is a default value for the property.
readOnly creates a read-only property.
The default value is false.
serializeAs sets how a property is persisted into a static representation.
Possible values are Binary, ProviderSpecific, String, and Xml.
The default value is ProviderSpecific.
allowAnonymous allows anonymous users to read and set the property.
The default value is false.
provider associates the property with a particular Profile provider.
customProviderData passes custom data to a Profile provider.
File: ShowProfile.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()
{
lblFirstname.Text = Profile.firstName;
lblLastName.Text = Profile.lastName;
Profile.numberOfVisits++;
lblNumberOfVisits.Text = Profile.numberOfVisits.ToString();
}
protected void btnUpdate_Click(object sender, EventArgs e)
{
Profile.firstName = txtNewFirstName.Text;
Profile.lastName = txtNewLastName.Text;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Show Profile</title>
</head>
<body>
<form id="form1" runat="server">
<div>
First Name:
<asp:Label
id="lblFirstname"
Runat="server" />
<br /><br />
Last Name:
<asp:Label
id="lblLastName"
Runat="server" />
<br /><br />
Number of Visits:
<asp:Label
id="lblNumberOfVisits"
Runat="server" />
<hr />
<asp:Label
id="lblNewFirstName"
Text="New First Name:"
AssociatedControlID="txtNewFirstName"
Runat="server" />
<asp:TextBox
id="txtNewFirstName"
Runat="server" />
<br /><br />
<asp:Label
id="lblNewLastName"
Text="New Last Name:"
AssociatedControlID="txtNewLastName"
Runat="server" />
<asp:TextBox
id="txtNewLastName"
Runat="server" />
<br /><br />
<asp:Button
id="btnUpdate"
Text="Update Profile"
OnClick="btnUpdate_Click"
Runat="server" />
</div>
</form>
</body>
</html>