插件中的模拟

 

发布日期: 2016年11月

适用于: Dynamics CRM 2015

模拟用于代表 Microsoft Dynamics 365 系统用户执行业务逻辑(自定义代码),为该用户提供所需功能或服务。 插件中执行的所有业务逻辑(包括 Web 服务方法调用和数据访问)都受模拟用户的安全特权限制。

不由沙盒或异步服务执行的插件以“CRMAppPool 属性”对话框的“标识”选项卡上指定的安全帐户执行。 可通过右击 Internet Information Services (IIS) 管理器中的“CRMAppPool”应用程序池,然后单击快捷菜单中的“属性”来访问该对话框。 默认情况下,CRMAppPool 使用“网络服务”帐户标识,但系统管理员可以在安装过程中更改它。 如果将 CRMAppPool 标识更改为非“网络服务”的系统帐户,则必须将新标识帐户添加到 Active Directory 中的 PrivUserGroup 组。 有关更详细的说明,请参阅详细信息:TechNet:更改Microsoft Dynamics CRM服务账户或AppPool身份

下面讨论可用于模拟用户的两种方法。

在插件注册期间模拟

在插件中模拟系统用户的一种方法是在插件注册期间指定模拟用户。 在以编程方式注册插件时,如果 SdkMessageProcessingStep.ImpersonatingUserId 属性设置为特定 Microsoft Dynamics 365 系统用户,则插件进行的 Web 服务调用将代表模拟用户执行。 如果在插件注册期间,ImpersonatingUserId 设置为Guid.Empty值,则调用/登录用户或标准的“system”用户为模拟用户。

调用/登录用户或系统用户是否用于模拟取决于管道处理的请求,这超出了本 SDK 文档的讨论范围。 有关系统用户的详细信息,请参阅下一主题。

备注

在使用 SDK 下载中提供的示例插件注册工具注册插件时,插件调用的服务方法将默认以调用或登录用户的帐户执行,除非您在“在用户上下文中运行”下拉菜单中选择了其他用户。 有关工具示例代码的详细信息,请参阅 SDK 包的 SDK\Tools\PluginRegistration 文件夹下的工具代码。下载 Microsoft Dynamics CRM SDK 包。

在插件执行期间模拟

插件注册期间定义的模拟可以在运行时在插件中更改。 即使注册插件时没有定义模拟,插件代码也可以使用模拟。 以下讨论指出了在插件中进行 Web 服务方法调用时在模拟中充当重要角色的关键属性和方法。

平台在运行时通过 UserId 属性将模拟用户 ID 传递给插件。 此属性可以具有下表中所示的三个不同值之一。

UserId 值

条件

启动用户或“system”用户

SdkMessageProcessingStep.ImpersonatingUserId 属性在插件注册时设置为 Guid.Empty

模拟用户

ImpersonatingUserId 属性在插件注册时设置为有效系统用户 ID。

“system”用户

当前管道由平台执行,而不是直接响应服务方法调用。

执行上下文的 InitiatingUserId 属性包含调用服务方法(最终导致插件执行)的系统用户的 ID。

重要

对于脱机执行的插件,该插件创建的任何实体都归登录用户所有。 在脱机模式下,不支持插件中的模拟。

另请参阅

插件开发
注册和部署插件
了解传递给插件的数据上下文
模拟另一个用户

© 2017 Microsoft。 保留所有权利。 版权