如何在没有ReadEntity和ReadRelationship权限的用户上下文中运行的插件中获取实体显示名称?

时间:2013-06-17 15:16:29

标签: c# dynamics-crm-2011

背景

我有一个自定义C#插件,禁止激活/停用某些特定角色的实体。我使用RetrieveEntityRequest获取插件正在执行的实体的EntityMetadata,并查找DisplayCollectionName.LocalizedLabels.First().Label以获取实体的显示名称,并在错误消息中将其显示给用户:< / p>

  

拒绝访问权限没有“我的自定义实体”

的权利

RetreieveEntityRequest的调用包含在try catch中,该try会占用任何异常,而是显示逻辑名称(即new_mycustomentity)。

问题

当没有对实体或关系的读取权限的用户执行插件时,将显示逻辑名称(由于用户没有权限)。

如何显示实体的显示名称,同时保持插件注册为“在调用用户的上下文中运行”并且不向用户提供对实体和关系的读取权限?

1 个答案:

答案 0 :(得分:3)

您可以创建服务实例作为SYSTEM用户,并执行RetrieveEntityRequest以获取标签,无论当前用户权限如何

IOrganizationService service = serviceFactory.CreateOrganizationService(null);