Microsoft CRM:如何启用/禁用systemuser而不dobectatestaterequest



为了禁用使用C#代码的Dynamics CRM 2016用户SetStateRequest当前使用。例子:

var requestToDisableUser = new SetStateRequest()
{
    EntityMoniker = new EntityReference("systemuser", userGuid),
    State = new OptionSetValue(1),
    Status = new OptionSetValue(-1)
};
organizationService.Execute(requestToDisableUser);

但是,根据Microsoft的说法,SetStateRequest被弃用,应使用更新

替换

但是,当我尝试使用更新来禁用用户
时示例:

var userToDisable = new Entity("systemuser", userGuid)
{
    ["statecode"] = new OptionSetValue(1),
    ["statuscode"] = new OptionSetValue(-1)
};
service.Update(userToDisable);

然后提出错误:

未经治疗的例外: System.ServiceModel.faultException`1 [Microsoft.xrm.sdk.organizationserviceFault]: " Systemuser"实体不包含名称=的属性 'stecode'。

是真的,因为Systemususer实体没有司令。
Systemuser实体具有IsDisabled属性,但仅读取。

那么,如何在不使用SetStateRequest的情况下禁用/启用用户?

我认为这是不可能的,除非有人证明是。为了支持我的意见:最新的SDK(8.2.1.1; 4/6/2017)仍然给出了SDKSampleCodeCSBusinessDataModelUsersAndRolesDisableOREnableUser.csSetStateRequest的示例。因此,无论它在文档的另一部分被弃用。

,都应该推荐这样做。

您可能会以MS支持启动事件,或者在Connect上提出建议;但是根据我的经验,他们不在乎解决方法。

在CRM Online 2015 Update 1之后,特殊消息被弃用了特殊属性。阅读更多。

每个元数据,systemuserIsDisabled属性可能显示为更新无效。很少有其他企业拥有的实体(例如团队,BU等)不会使用statecode&状态代码。

如果打算不使用不弃用的方法,则应使用IsDisabled属性。

这可能是文档中缺少的作品。但是可以使用以下更新消息找到wrt专业操作的提示。

这些专业消息将继续与2011年端点一起使用。但是,建议是在可能的情况下使用UpdatereQuest或更新方法来设置这些属性。更新消息简化了组织服务,并使与Dynamics 365一起使用的标准数据集成工具更加容易,此外,更容易编码和注册插件以执行单个更新消息而不是多个专用消息。以上列出的属性的属性已更改为true,以启用此功能。

您可以在代码中继续使用2011年端点的这些专用消息。但是,最终替换组织服务的Web API仅支持此类操作的更新消息。如果您想开始更改代码以与Web API保持一致,现在可以这样做。有关更多信息,请参见使用Microsoft Dynamics 365 Web API。

最新更新