插件中的模拟

 

发布日期: 2017年1月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online

模拟用于代表 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。

重要

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

另请参阅

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

Microsoft Dynamics 365

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