在SharePoint2010中,我们可以选择几种不同的方式来访问域用户的profile,下面简单介绍3种方法:
1.通过客户端直接调用user profile service来访问
例如项目中有silverlight模块想显示当前用户的profile信息,可以这么作:
首先添加Service Reference,输入service url http://rootsite/sites/subsite/_vti_bin/UserProfileService.asmx?WSDL
rootsite & subsite请根据实际情况替换。然后我们为我们的Service reference取名为UserProfileServiceProxy。
其次在maipage方法中加入调用service 代码以及回调方法代码:
以下是代码片段: public MainPage() { InitializeComponent(); client = new UserProfileServiceProxy.UserProfileServiceSoapClient(); client.Endpoint.Behaviors.Add(new AsmxBehavior()); client.GetUserProfileByNameCompleted +=new EventHandler(client_GetUserProfileByNameCompleted); client.GetUserProfileByNameAsync(null); } private void client_GetUserProfileByNameCompleted(object sender, UserProfileServiceProxy.GetUserProfileByNameCompletedEventArgs e) { if (e.Error == null) { string s = ""; for (int i = 0; i < e.Result.Count; i++) { if (e.Result[i].Values.Count > 0) { s +="{" + i.ToString() + "}" +"-->" + e.Result[i].Values[0].Value.ToString() + "\n"; } } MessageBox.Show(s); } } |
其中加入AsmxBehavior类的原因是silverlight对guid的deseriable无法识别,网上找了个别人写的类,不添加这个bahavior,service调用会报异常,AsmxBehavior类和AsmxMessageInspector类就解决了这个问题,用的时候,把这两个类加进你的项目中就可以了。AsmxBehavior类和AsmxMessageInspector类的详细代码会在附件中加上。
这样就可以得到一个当前user的profile信息了,可以看见我们主要是调用了GetUserProfileByNameAsync(null)这个方法,传入null参数返回当前用户profile,当然你可以给别的name来得到相应的profile。
2. 在server直接通过SharePoint 的 Object Model取得service,方法如下:
以下是代码片段: using (SPSite site = new SPSite("siteurl")) { SPServiceContext context = SPServiceContext.GetContext(site); UserProfileManager pmManager = new UserProfileManager(context); System.Collections.IEnumerator item = pmManager.GetEnumerator(); while (item.MoveNext()) { UserProfile userProfile = item.Current as UserProfile; object o = userProfile[PropertyConstants.Url].Value; } } |
注意此方法需要先添加引用下面2个dll文件:
以下是代码片段: using Microsoft.Office.Server; using Microsoft.Office.Server.UserProfiles; |
3.当然当你有一个可以直接从公司域环境中读取信息的帐号时,也可以直接去AD中读取用户profile,方法如下:
以下是代码片段: using System.DirectoryServices; static void Main(string[] args) { DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://ads.autodesk.com", @"youraccount", "password",AuthenticationTypes.Secure); DirectorySearcher ds = new DirectorySearcher(directoryEntry); ds.Filter = "(&(objectCategory=Person)(objectClass=User))"; SearchResultCollection collection = ds.FindAll(); int count = 0; foreach (SearchResult sr in collection) { System.DirectoryServices.DirectoryEntry det = sr.GetDirectoryEntry(); PropertyCollection pc = det.Properties; if (det.Properties["mail"].Value != null && det.Properties["sAMAccountName"].Value != null) { Console.WriteLine(det.Properties["mail"].Value.ToString() + "--------" + det.Properties["sAMAccountName"].Value.ToString()); count++; } if (det.Properties["sAMAccountName"].Value.ToString() == "your account") { foreach (string propName in pc.PropertyNames) { foreach (object value in det.Properties[propName]) Console.WriteLine(" property = {0} value = {1}", propName, value); } } } Console.WriteLine(count); Console.Read(); } |
分享到:
相关推荐
AD域中的用户信息导入到SharePoint2010AD域中的用户信息导入到SharePoint2010AD域中的用户信息导入到SharePoint2010AD域中的用户信息导入到SharePoint2010
通过rest服务在js中获取任意用户的userprofile信息
备份、还原或移动 SharePoint 网站的几种方法
SharePoint 2013/2016 的环境中批量上载用户的profile picture的代码
自行开发的SharePoint 2013修改AD域用户密码的WebPart,对于大中型的企业,特别是基于windows ad域管理的用户,如果能够在Sharepoint直接修改当前用户的windows 活动目录(AD)域用户密码,这样能够极大方便用户变更AD...
SharePoint 2013 匿名访问配置的两种配置,一种网站上的匿名配置,第二种,配置扩展站点
SharePoint要在master page中动态显示List数据的几种方式
Sharepoint2013 修改AD域用户密码 切换用户 以其他用户登录
infopath在sharepoint中使用数据库链接(视频)
sharepoint 中文帮助文档 (sharepoint学习文档)
Sharepoint匿名访问的详细地说明,表述非常清晰,适合SharePoint2010的设置。
微软发布的sharepoint中文社区模板
提供了一个Webpart项目,生成Webpart控件可以判断用户组的权限并进行相应的跳转。
SharePoint2021 以其他用户登录和修改AD域用户密码.docx
SharePoint WebPart 用户控件包装器
SharePoint2013 显示切换用户菜单 SharePoint2013显示切换用户菜单
其实,windows 2003已经自己带了修改域用户密码的相关ASP网页文件了,位置在C:\WINDOWS\system32\inetsrv\iisadmpwd,只需要在IIS里面发布就可以了。但是在2008 R2里面没有这个东西了,我只有另想办法了,在这除去...
SharePoint 2013 中的服务
SharePoint的列表中某列去除重复值的一种方法
在SharePoint中更改用户权限的直观方法。 ##截屏 ##特征 编辑SharePoint用户权限 编辑SharePoint组用户 编辑SharePoint组信息 导出用户权限 导出组中的用户 从SharePoint网站删除用户删除所有权限,包括唯一...