有时您希望能够在不应用自定义业务逻辑的情况下执行数据操作。例如,如果您要导入许多您知道已经符合您业务的数据一致性逻辑的记录。您希望尽快完成此操作,因此您希望避免为每个请求处理自定义逻辑所花费的额外时间。
一种选择是定位并禁用包含业务逻辑的自定义插件。但这意味着当这些插件被禁用时,所有用户的逻辑都将被禁用。这也意味着您必须注意仅禁用正确的插件,并记住在完成后重新启用它们。
此处描述的选项允许您针对配置为使用此选项的应用程序发送的特定请求禁用自定义同步插件。
对于这些类型的情况,您可以选择禁用通常会应用的自定义业务逻辑。有两个要求:
- 您必须使用 BypassCustomPluginExecution 选项发送请求。
- 发送请求的用户必须具有 prvBypassCustomPlugins 权限。默认情况下,只有具有系统管理员安全角色的用户才有此权限。
使用Web API
要使用 Web API 应用此选项,请MSCRM.BypassCustomPluginExecution : true
在请求中作为标头传递。
POST https://yourorg.api.crm.dynamics.com/api/data/v9.1/accounts HTTP/1.1
MSCRM.BypassCustomPluginExecution: true
Authorization: Bearer [REDACTED]
Content-Type: application/json
Accept: */*
{
"name":"Test Account"
}
使用组织服务
您可以将 CrmServiceClient.BypassPluginExecution 属性设置为 true
以下示例在创建新帐户记录时设置CrmServiceClient.BypassPluginExecution 属性:
var svc = new CrmServiceClient(conn);
svc.BypassPluginExecution = true;
var account = new Entity("account")
{
Attributes = {
{ "name", "Test Account" }
}
};
svc.Create(account);
您可以使用 Request 类之一将该值设置为可选参数
以下示例BypassCustomPluginExecution在创建新帐户记录时设置可选参数:
var svc = new CrmServiceClient(conn);
var account = new Entity("account")
{
Attributes = {
{ "name", "Test Account" }
}
};
var createRequest = new CreateRequest
{
Target = account
};
createRequest.Parameters.Add("BypassCustomPluginExecution", true);
svc.Execute(createRequest);
具体官方介绍详见Bypass Custom Business Logic (Microsoft Dataverse) - Power Apps | Microsoft Docs