//客户端代码
<head runat="server">
<title>Profile Service</title>
<script language="javascript" type="text/javascript">
//保存profile
function saveProfiles()
{
//获取属性对象
var properties = Sys.Services.ProfileService.properties;
properties.Name = $get("txtName").value;
properties.Age = parseInt($get("txtAge").value, 10);
properties.Address.City = $get("txtCity").value;
properties.Address.PostalCode = $get("txtPostalCode").value;
/*
Sys.Services.ProfileService.save(propertyNames, // 需要保存的Profile名,null表示全取
saveCompletedCallback, // 保存成功的回调函数
failedCallback, // 加载失败的回调函数
userContext // 可以随意指定的上下文对象
); */
//写入
Sys.Services.ProfileService.save(
null,
saveCompleted);
}
//保存成功回调函数
function saveCompleted()
{
$get("message").innerHTML = "Profile Saved";
}
//读取profile
function loadProfiles()
{
/*Sys.Services.ProfileService.load(propertyNames, // 需要加载的Profile名,null表示全取
loadCompletedCallback, // 加载成功的回调函数
failedCallback, // 加载失败的回调函数
userContext // 可以随意指定的上下文对象
);*/
Sys.Services.ProfileService.load(
null,
loadCompleted);
}
/*
function loadCompletedCallback(number, // 本次加载的Profile数量
userContext, // 用户随意指定的上下文对象
methodName // 即"Sys.Services.ProfileService.load"
)
*/
//读取成功回调函数
function loadCompleted()
{
//获取属性对象
var properties = Sys.Services.ProfileService.properties;
//判断profile是否存在
if (properties.Age)
{ //读取profile
$get("txtName").value= properties.Name;
$get("txtAge").value= properties.Age;
$get("txtCity").value = properties.Address.City;
$get("txtPostalCode").value = properties.Address.PostalCode;
$get("message").innerHTML = "Profile Loaded";
}
else
{
$get("txtName").value= "";
$get("txtAge").value= "";
$get("txtCity").value = "";
$get("txtPostalCode").value = "";
$get("message").innerHTML = "No Profile";
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<ProfileService LoadProperties="Address.City, Address.PostalCode, Name, Age" />
</asp:ScriptManager>
<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
<asp:Button ID="btnLogIn" runat="server" Text="Login" OnClick="btnLogin_Click" />
<asp:Button ID="btnLogout" runat="server" Text="Logout" OnClick="btnLogout_Click" />
<hr />
Name: <input type="text" id="txtName" /><br />
Age: <input type="text" id="txtAge" /><br />
Email: <input type="text" id="txtEmail" /><br />
City: <input type="text" id="txtCity" /><br />
Street: <input type="text" id="txtStreet" /><br />
Postal Code: <input type="text" id="txtPostalCode" /><br />
<div id="message" style="color:Red;"></div><br />
<input type="button" value="Show" onclick="loadProfiles()" />
<input type="button" value="Save" onclick="saveProfiles()" />
</form>
</body>
//服务器端函数,用于登陆,登出<title>Profile Service</title>
<script language="javascript" type="text/javascript">
//保存profile
function saveProfiles()
{
//获取属性对象
var properties = Sys.Services.ProfileService.properties;
properties.Name = $get("txtName").value;
properties.Age = parseInt($get("txtAge").value, 10);
properties.Address.City = $get("txtCity").value;
properties.Address.PostalCode = $get("txtPostalCode").value;
/*
Sys.Services.ProfileService.save(propertyNames, // 需要保存的Profile名,null表示全取
saveCompletedCallback, // 保存成功的回调函数
failedCallback, // 加载失败的回调函数
userContext // 可以随意指定的上下文对象
); */
//写入
Sys.Services.ProfileService.save(
null,
saveCompleted);
}
//保存成功回调函数
function saveCompleted()
{
$get("message").innerHTML = "Profile Saved";
}
//读取profile
function loadProfiles()
{
/*Sys.Services.ProfileService.load(propertyNames, // 需要加载的Profile名,null表示全取
loadCompletedCallback, // 加载成功的回调函数
failedCallback, // 加载失败的回调函数
userContext // 可以随意指定的上下文对象
);*/
Sys.Services.ProfileService.load(
null,
loadCompleted);
}
/*
function loadCompletedCallback(number, // 本次加载的Profile数量
userContext, // 用户随意指定的上下文对象
methodName // 即"Sys.Services.ProfileService.load"
)
*/
//读取成功回调函数
function loadCompleted()
{
//获取属性对象
var properties = Sys.Services.ProfileService.properties;
//判断profile是否存在
if (properties.Age)
{ //读取profile
$get("txtName").value= properties.Name;
$get("txtAge").value= properties.Age;
$get("txtCity").value = properties.Address.City;
$get("txtPostalCode").value = properties.Address.PostalCode;
$get("message").innerHTML = "Profile Loaded";
}
else
{
$get("txtName").value= "";
$get("txtAge").value= "";
$get("txtCity").value = "";
$get("txtPostalCode").value = "";
$get("message").innerHTML = "No Profile";
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<ProfileService LoadProperties="Address.City, Address.PostalCode, Name, Age" />
</asp:ScriptManager>
<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
<asp:Button ID="btnLogIn" runat="server" Text="Login" OnClick="btnLogin_Click" />
<asp:Button ID="btnLogout" runat="server" Text="Logout" OnClick="btnLogout_Click" />
<hr />
Name: <input type="text" id="txtName" /><br />
Age: <input type="text" id="txtAge" /><br />
Email: <input type="text" id="txtEmail" /><br />
City: <input type="text" id="txtCity" /><br />
Street: <input type="text" id="txtStreet" /><br />
Postal Code: <input type="text" id="txtPostalCode" /><br />
<div id="message" style="color:Red;"></div><br />
<input type="button" value="Show" onclick="loadProfiles()" />
<input type="button" value="Save" onclick="saveProfiles()" />
</form>
</body>
protected void btnLogin_Click(object sender, EventArgs e)
{
FormsAuthentication.SetAuthCookie(this.txtUserName.Text, false);
}
protected void btnLogout_Click(object sender, EventArgs e)
{
FormsAuthentication.SignOut();
}
//WebConfig配置{
FormsAuthentication.SetAuthCookie(this.txtUserName.Text, false);
}
protected void btnLogout_Click(object sender, EventArgs e)
{
FormsAuthentication.SignOut();
}
出于安全性的考虑,ASP.NET AJAX的Profile Service在默认情况下不会开放Profile的访问权限
<system.web.extensions>
<scripting>
<webServices>
<profileService enabled="true"
readAccessProperties="Name, Age, Email, Address.City, Address.Street, Address.PostalCode"
writeAccessProperties="Name, Age, Email, Address.City, Address.Street, Address.PostalCode" />
</webServices>
</scripting>
</system.web.extensions>
<scripting>
<webServices>
<profileService enabled="true"
readAccessProperties="Name, Age, Email, Address.City, Address.Street, Address.PostalCode"
writeAccessProperties="Name, Age, Email, Address.City, Address.Street, Address.PostalCode" />
</webServices>
</scripting>
</system.web.extensions>
<profile enabled="true" automaticSaveEnabled="true" defaultProvider="SqlProvider">
<providers>
<clear />
<add name="SqlProvider"
type="System.Web.Profile.SqlProfileProvider"
connectionStringName="ProfileDatabase"
applicationName="ProfileSample"
description="Sample for ASP.NET profile and Profile Service" />
</providers>
<properties>
<add name="Name" type="System.String"/>
<add name="Email" type="System.String" />
<add name="Age" type="System.Int32" />
<group name="Address">
<add name="City" type="System.String" />
<add name="Street" type="System.String" />
<add name="PostalCode" type="System.String" />
</group>
</properties>
</profile>
<providers>
<clear />
<add name="SqlProvider"
type="System.Web.Profile.SqlProfileProvider"
connectionStringName="ProfileDatabase"
applicationName="ProfileSample"
description="Sample for ASP.NET profile and Profile Service" />
</providers>
<properties>
<add name="Name" type="System.String"/>
<add name="Email" type="System.String" />
<add name="Age" type="System.Int32" />
<group name="Address">
<add name="City" type="System.String" />
<add name="Street" type="System.String" />
<add name="PostalCode" type="System.String" />
</group>
</properties>
</profile>
浙公网安备 33010602011771号