提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|其它|编辑:郝浩|2010-12-13 15:55:43.000|阅读 1276 次
概述:在SharePoint2010中,我们可以选择几种不同的方式来访问域用户的profile,下面简单介绍3种方法访问域用户profile.
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
在SharePoint2010中,我们可以选择几种不同的方式来访问域用户的profile,下面简单介绍3种方法:
1.通过客户端直接调用user profile service来访问
例如项目中有silverlight模块想显示当前用户的profile信息,可以这么作:
首先添加Service Reference,输入service url //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<UserProfileServiceProxy.
GetUserProfileByNameCompletedEventArgs>
(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();
}
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:网络转载自RyanDing面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢