从自定义页面访问登录的 CRM 用户

accessing the logged in CRM user from custom page

我们有 Dynamics CRM 和一个从功能区加载的网络表单,基本上在 iframe 中。

我们如何获得登录用户?在右上角,是我通过 Active Directory 登录的名字和图像。但是,如果我做类似的事情:

var UserID = window.parent.Xrm.Page.context.getUserId();

或在 C# 中:

UserPrincipal user = UserPrincipal.Current; 
lblUser.Text = user.SamAccountName;

然后我们将获得 CRM 配置使用的通用用户。

如果我右键单击整个表单并转到 "View Source",我可以看到:

var USER_NAME = 'Rodney Ellis';

在 Chrome 的开发者工具中,我可以从控制台 运行 执行此操作,然后我的名字会出现:

alert(USER_NAME);

但是当我尝试从代码中的 javascript 访问它时,它说找不到它: 未捕获的引用错误:USER_NAME 未定义

如何通过 c# 或 js 从 aspx 网络表单中获取用户名?被阻止的跨端脚本已经停止了许多简单的方法,因此我们正在寻找解决方法。

下面的代码应该可以满足您的需求。 Read more

Xrm.Page.context.getUserName();

但是基于popup或者inline embedded iframe,你有append in front

window.parent.Xrm.Page.context.getUserName();
window.opener.Xrm.Page.context.getUserName();

有史以来最伟大的黑客之一......我们通过将另一个 iFrame 嵌入到网络资源中来解决这个问题!

因此 Web 资源可以调用 Xrm.Page.context.getUserName(),然后将其连接到我们随后传递到 iFrame 中的查询字符串。因为 CRM 认为 iframe 只是一个控件,所以它允许在其中执行所有 webform 命令并且不会给出任何 500 错误。