Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)归海一刀published in(发表于) 2014/1/30 1:10:46 新瓶旧酒ASP.NET,AJAX(10),-,客户端脚本编程(Sys.Services命名空间下的)_[Asp.Net教程]
新瓶旧酒ASP.NET AJAX(10) - 客户端脚本编程(Sys.Services命名空间下的类)
介绍ASP.NET AJAX的Sys.Services.AuthenticationService类、Sys.Services.ProfileService类、Sys.Services.ProfileGroup类完美地和ASP.NET 2.0的Membership和Profile进行了集成
关键1、Sys.Services.AuthenticationService类的login()方法 Sys.Services.AuthenticationService.login(userName, password, isPersistent, customInfo, redirectUrl, loginCompletedCallback, failedCallback, userContext); ·userName - 用户名 ·password - 密码 ·isPersistent - 是否跨浏览器保存认证信息(持久保留) ·customInfo - 保留字段,可能在将来使用 ·redirectUrl - 登录成功后重定向到的URL ·loginCompletedCallback - 登录成功后的回调函数 ·failedCallback - 登录失败后的回调函数 ·userContext - 用户上下文 WebService中与其对应的方法 - public bool Login()
2、登录成功后的回调函数 function LoginComplete(bool validCredentials, userContext, methodName) ·validCredentials - 是否成功通过了验证 ·userContext - 用户上下文 ·methodName - 调用的方法名
3、Sys.Services.AuthenticationService类的logout()方法 Sys.Services.AuthenticationService.logout(redirectUrl, logoutCompletedCallback, failedCallback, userContext); ·redirectUrl - 注销成功后重定向到的URL ·logoutCompletedCallback - 注销成功后的回调函数 ·failedCallback - 注销失败后的回调函数 ·userContext - 用户上下文 WebService中与其对应的方法 - public void Logout()
4、注销成功后的回调函数 function LogoutComplete(result, userContext, methodName) ·result - 保留字段,可能在将来使用,始终为null ·userContext - 用户上下文 ·methodName - 调用的方法名
5、Sys.Services.AuthenticationService类的属性 ·defaultLoginCompletedCallback - 登录成功后的回调函数 ·defaultLogoutCompletedCallback - 注销成功后的回调函数 ·defaultFailedCallback - 登录或注销失败后的回调函数 ·isLoggedIn - 当前用户是否已经登录 ·path - authentication service路径 ·timeout - 超时时间
6、Sys.Services.ProfileService类的load()方法 Sys.Services.ProfileService.load(propertyNames, loadCompletedCallback, failedCallback, userContext); ·propertyNames - Profile属性名称数组 ·loadCompletedCallback - 成功后的回调函数 ·failedCallback - 失败后的回调函数 ·userContext - 用户上下文 WebService中与其对应的方法 - public IDictionary GetAllPropertiesForCurrentUser()和public IDictionary GetPropertiesForCurrentUser(string[] properties)
7、读取Profile成功后的回调函数 function onLoadCompleted(numProperties, userContext, methodName) ·numProperties - 返回的Profile属性个数 ·userContext - 用户上下文 ·methodName - 调用的方法名
8、Sys.Services.ProfileService类的save()方法 Sys.Services.ProfileService.load(propertyNames, saveCompletedCallback, failedCallback, userContext); ·propertyNames - Profile属性名称数组 ·saveCompletedCallback - 成功后的回调函数 ·failedCallback - 失败后的回调函数 ·userContext - 用户上下文 ·WebService中与其对应的方法 - public int SetPropertiesForCurrentUser(IDictionary values)
9、保存Profile成功后的回调函数 onSaveCompleted(numProperties, userContext, methodName) ·numProperties - 保存的Profile属性个数 ·userContext - 用户上下文 ·methodName - 调用的方法名
10、Sys.Services.ProfileService类的属性 ·读取或设置某个Profile的属性要这么写 - Sys.Services.ProfileService.properties.FieldName; ·defaultLoadCompletedCallback - 读取Profile成功后的回调函数 ·defaultSaveCompletedCallback - 保存Profile成功后的回调函数 ·defaultFailedCallback - 读取或保存Profile失败后的回调函数 ·path - profile service路径 ·timeout - 超时时间
11、Sys.Services.ProfileGroup类 ·定义一个Profile组(同时需要在Web.config中定义)
12、登录或注销失败、读取或保存Profile失败后的回调函数 function onFailed(error, userContext, methodName) ·error - Sys.Net.WebServiceError对象 ·userContext - 用户上下文 ·methodName - 调用的方法名
13、如果要自动调用相关服务的话,则需要在web.config中的节点下增加类似如下的配置 readAccessProperties="Age, Salary" writeAccessProperties="Age, Salary" />
示例AuthenticationService.asmx<%@ WebService Language="C#" Class="AuthenticationService" %>
using System;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;using System.Web.Script.Services;
[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][ScriptService]public class AuthenticationService : System.Web.Services.WebService{ /**//// /// 登录 /// /// 用户名 /// 密码 /// 是否跨浏览器保存认证信息(持久保留) /// [WebMethod] public bool Login(string userName, string password, bool createPersistentCookie) { //Place code here.
System.Web.Security.FormsAuthentication.SetAuthCookie(userName, createPersistentCookie); return true; }
/**//// /// 注销 /// [WebMethod] public void Logout() { //Place code here. }}
ProfileService.asmx<%@ WebService Language="C#" Class="ProfileService" %>
using System;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;using System.Web.Script.Services;using System.Collections.Generic;
[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][ScriptService]public class ProfileService : System.Web.Services.WebService{ /**//// /// 获取用户的全部Profile /// /// [WebMethod] public IDictionary GetAllPropertiesForCurrentUser() { Dictionary dic = new Dictionary();
dic.Add("Age", 27); dic.Add("Salary", 100);
Article article = new Article(); article.Title = "Article Title From Server"; article.PublishTime = DateTime.Now;
dic.Add("Article", article);
return dic; }
/**//// /// 获取用户的指定的Profile /// /// 属性名称数组 /// [WebMethod] public IDictionary GetPropertiesForCurrentUser(string[] properties) { //Place code here. return null; }
/**//// /// 保存用户的Profile /// /// 用户的Profile的字典数据 /// [WebMethod] public int SetPropertiesForCurrentUser(IDictionary values) { //Place code here. return values.Count; }}
/**//// /// Article实体类/// /// /// 示例而已,实际项目中要继承自System.Web.Profile.ProfileBase/// public class Article{ private string _title; /**//// /// 文章标题 /// public string Title { get { return _title; } set { _title = value; } }
private DateTime _publishTime; /**//// /// 文章发布日期 /// public DateTime PublishTime { get { return _publishTime; } set { _publishTime = value; } }}
Sample.aspx<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Sample.aspx.cs" Inherits="ClientScripting_SysServices_Sample" Title="Sys.Services命名空间下的类" %>
帐号: 密码: onclick="btnLogin_click()" /> onclick="btnLogout_click()" /> 年龄: 薪水: onclick="btnSave_click()" /> onclick="btnLoad_click()" />
ScriptManager的设置
Web.config中的相关设置(在节点下)
运行结果1、页面加载后AuthenticationService path:/Web/ClientScripting/SysServices/AuthenticationService.asmxAuthenticationService timeout:0ProfileService path:ProfileService.asmxProfileService timeout:0
2、单击“登录”按钮登录成功用户上下文:用户上下文调用的方法名为:Sys.Services.AuthenticationService.login登录状态:true
3、单击“注销”按钮弹出框,信息:成功调用Sys.Services.AuthenticationService.logout
4、单击“保存Profile”按钮通过Profile保存的属性的数量为:4
5、单击“读取Profile”按钮通过Profile读取的属性的数量为:3Age:27Article Title:Article Title From ServerArticle PublishTime:2007-07-12作者:webabcd[源码下载]
赞