ASP.NET AJAX自定义应用程序服务的服务器端实现
自定义用户个性化Web Service
与自定义身份认证服务类似的是,若想自定义用户个性化服务,我们也需要严格遵循一定的规则(固定的方法个数与方法签名等)手工编写一个Web Service。这里我们给出了一个自定义用户个性化Web Service的原型,至于其中的具体实现方法,需要根据实际项目的需求进行具体分析:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class CustomProfileService : System.Web.Services.WebService
{
/// <summary>
/// 返回属于当前用户所有个性化属性
/// </summary>
/// <returns>包含当前用户所有个性化属性的IDictionary</returns>
[WebMethod]
public IDictionary<string, object> GetAllPropertiesForCurrentUser()
{
return null;
}
/// <summary>
/// 返回属于当前用户的指定的个性化属性
/// </summary>
/// <param name="properties">包含将要得到的个性化属性名称的数组</param>
/// <returns>包含当前用户指定的个性化属性的IDictionary</returns>
[WebMethod]
public IDictionary<string, object> GetPropertiesForCurrentUser(string[] properties)
{
return null;
}
/// <summary>
/// 设置属于当前用户的指定的用户个性化属性
/// </summary>
/// <param name="values">包含当前用户指定的个性化属性的IDictionary</param>
/// <returns>成功更新的用户个性化属性的个数</returns>
[WebMethod]
public int SetPropertiesForCurrentUser(IDictionary<string, object> values)
{
return 0;
}
}
完成自定义的用户个性化Web Service之后,若想在某个ASP.NET AJAX页面中使用该自定义的用户个性化服务,我们也需要在ScriptManager中显式声明:
<asp:ScriptManager ID="sm" runat="server">
<ProfileService
Path="~/CustomApplicationServices/CustomProfileService.asmx" />
</asp:ScriptManager>
其中粗体部分的<ProfileService />标签对应着ASP.NET AJAX服务器端的System.Web.UI.ProfileServiceManager类型,负责设置页面中自定义用户个性化Web Service的位置。将其Path属性设置为前面编写的CustomProfileService.asmx Web Service之后,该页面中的用户个性化服务将均由这个自定义的CustomProfileService.asmx处理。
提示:若是将<ProfileService />标签的Path属性设置为空字符串,或是不设置该属性,则ASP.NET AJAX仍会使用默认的用户个性化服务。
ProfileServiceManager类型还暴露出了一个属性:LoadProperties,表示希望随页面HTML代码的加载一起发送到客户端的用户个性化属性。我们可以为LoadProperties设置多个不同的用户个性化属性,属性之间用逗号分开。
与自定义身份认证服务类似的是,若想自定义用户个性化服务,我们也需要严格遵循一定的规则(固定的方法个数与方法签名等)手工编写一个Web Service。这里我们给出了一个自定义用户个性化Web Service的原型,至于其中的具体实现方法,需要根据实际项目的需求进行具体分析:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class CustomProfileService : System.Web.Services.WebService
{
/// <summary>
/// 返回属于当前用户所有个性化属性
/// </summary>
/// <returns>包含当前用户所有个性化属性的IDictionary</returns>
[WebMethod]
public IDictionary<string, object> GetAllPropertiesForCurrentUser()
{
return null;
}
/// <summary>
/// 返回属于当前用户的指定的个性化属性
/// </summary>
/// <param name="properties">包含将要得到的个性化属性名称的数组</param>
/// <returns>包含当前用户指定的个性化属性的IDictionary</returns>
[WebMethod]
public IDictionary<string, object> GetPropertiesForCurrentUser(string[] properties)
{
return null;
}
/// <summary>
/// 设置属于当前用户的指定的用户个性化属性
/// </summary>
/// <param name="values">包含当前用户指定的个性化属性的IDictionary</param>
/// <returns>成功更新的用户个性化属性的个数</returns>
[WebMethod]
public int SetPropertiesForCurrentUser(IDictionary<string, object> values)
{
return 0;
}
}
完成自定义的用户个性化Web Service之后,若想在某个ASP.NET AJAX页面中使用该自定义的用户个性化服务,我们也需要在ScriptManager中显式声明:
<asp:ScriptManager ID="sm" runat="server">
<ProfileService
Path="~/CustomApplicationServices/CustomProfileService.asmx" />
</asp:ScriptManager>
其中粗体部分的<ProfileService />标签对应着ASP.NET AJAX服务器端的System.Web.UI.ProfileServiceManager类型,负责设置页面中自定义用户个性化Web Service的位置。将其Path属性设置为前面编写的CustomProfileService.asmx Web Service之后,该页面中的用户个性化服务将均由这个自定义的CustomProfileService.asmx处理。
提示:若是将<ProfileService />标签的Path属性设置为空字符串,或是不设置该属性,则ASP.NET AJAX仍会使用默认的用户个性化服务。
ProfileServiceManager类型还暴露出了一个属性:LoadProperties,表示希望随页面HTML代码的加载一起发送到客户端的用户个性化属性。我们可以为LoadProperties设置多个不同的用户个性化属性,属性之间用逗号分开。
0
相关文章