MOSS2010 客户端对象模型开发(二)
2012-08-31 13:09 温森特 阅读(392) 评论(1) 编辑 收藏 举报本篇将讲述MOSS2010客户端对象模型获取用户信息的方法,我们在服务器端开发的时候,如果想得到用户的信息,一般我们需要调用 UserProfileManager 类进行读取和操作,但是,查遍了MOSS2010的SDK,客户端对象模型里面,没有这个类或者相似的方法。后来从研究了一番,发现MOSS2010客户端得到用户的信息其实更加的简便,我们只需调取用户信息列表SiteUserInfoList就可以了,然后用CAML进行查询。
using (ClientContext client = new ClientContext(url))
{
NetworkCredential credentials = new NetworkCredential(UserName, UserPassword, Functions.GetAppSeetingValueByKey("Domain_Name"));
client.Credentials = credentials;
List userInformationList = client.Web.SiteUserInfoList;
CamlQuery camlQueryForUser = new CamlQuery();
camlQueryForUser.ViewXml = String.Format(@"<View><Query><Where><Eq><FieldRef Name='Name'/><Value Type='Text'>{1}\{0}</Value></Eq></Where></Query></View>", UserName, Functions.GetAppSeetingValueByKey("Domain_Name"));
ListItemCollection listItems = userInformationList.GetItems(camlQueryForUser);
client.Load(listItems);
client.ExecuteQuery();
if (listItems.Count > 0)
{
dt.Rows.Add("1", "姓名", UtilityPlus.GetItemString(listItems[0].FieldValues["Title"]));
dt.Rows.Add("2", "登录账号", UtilityPlus.GetItemString(listItems[0].FieldValues["Name"]));
dt.Rows.Add("3", "所属部门", UtilityPlus.GetItemString(listItems[0].FieldValues["Department"]));
dt.Rows.Add("4", "移动电话", UtilityPlus.GetItemString(listItems[0].FieldValues["MobilePhone"]));
dt.Rows.Add("5", "电子邮件", UtilityPlus.GetItemString(listItems[0].FieldValues["EMail"]));
}
}
{
NetworkCredential credentials = new NetworkCredential(UserName, UserPassword, Functions.GetAppSeetingValueByKey("Domain_Name"));
client.Credentials = credentials;
List userInformationList = client.Web.SiteUserInfoList;
CamlQuery camlQueryForUser = new CamlQuery();
camlQueryForUser.ViewXml = String.Format(@"<View><Query><Where><Eq><FieldRef Name='Name'/><Value Type='Text'>{1}\{0}</Value></Eq></Where></Query></View>", UserName, Functions.GetAppSeetingValueByKey("Domain_Name"));
ListItemCollection listItems = userInformationList.GetItems(camlQueryForUser);
client.Load(listItems);
client.ExecuteQuery();
if (listItems.Count > 0)
{
dt.Rows.Add("1", "姓名", UtilityPlus.GetItemString(listItems[0].FieldValues["Title"]));
dt.Rows.Add("2", "登录账号", UtilityPlus.GetItemString(listItems[0].FieldValues["Name"]));
dt.Rows.Add("3", "所属部门", UtilityPlus.GetItemString(listItems[0].FieldValues["Department"]));
dt.Rows.Add("4", "移动电话", UtilityPlus.GetItemString(listItems[0].FieldValues["MobilePhone"]));
dt.Rows.Add("5", "电子邮件", UtilityPlus.GetItemString(listItems[0].FieldValues["EMail"]));
}
}
您的支持,我的动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构