【发布时间】:2011-02-27 13:22:56
【问题描述】:
从位于 ISV 目录中的自定义 ASPX 页面的代码中获取当前登录的 MS Dynamics 用户的身份的推荐方法是什么?
执行此操作的方法必须与 Dynamics 是否使用 AD/NTLM 身份验证或其他身份验证机制无关,并且不得要求启用模拟或更改 web.config。
谢谢
【问题讨论】:
标签: .net dynamics-crm dynamics-crm-4
从位于 ISV 目录中的自定义 ASPX 页面的代码中获取当前登录的 MS Dynamics 用户的身份的推荐方法是什么?
执行此操作的方法必须与 Dynamics 是否使用 AD/NTLM 身份验证或其他身份验证机制无关,并且不得要求启用模拟或更改 web.config。
谢谢
【问题讨论】:
标签: .net dynamics-crm dynamics-crm-4
您可以通过 CRM Web 服务执行 WhoAmIRequest 从 CRM 数据库中获取 systemuserid,然后通过 crmservice.Retrieve() 获取 systemuser 记录。只要用户完全分配了任何 CRM 安全角色,WhoAmIRequest 和对他们自己的systemuser 记录的读取权限就应该始终有效。
【讨论】:
在 SDK 中使用 Xrm 上下文
public Xrm.systemuser CurrentUser {
get
{
var context = new XrmDataContext();
var reponse = context.UsingService(
service => (WhoAmIResponse)service.Execute(new WhoAmIRequest()));
return (from user in context.systemusers
where user.systemuserid == reponse.UserId
select user).Single();
} }
或使用网络服务(此处称为“crm”)
public systemuser CurrentUser
{
get
{
WhoAmIRequest userRequest = new WhoAmIRequest();
WhoAmIResponse current = (WhoAmIResponse)crm.Execute(userRequest);
return (systemuser)crm.Retrieve(EntityName.systemuser.ToString(), current.UserId, new AllColumns());
}
}
【讨论】: