使用 CRM WebAPI 执行 GetAllTimeZonesWithDisplayName 函数

Using CRM WebAPI to execute GetAllTimeZonesWithDisplayName function

我正在尝试执行 GetAllTimeZonesWithDisplayName 函数来检索当前用户的时区;但是我遇到了一些困难

我一直在关注这个 blog 但似乎有些事情发生了变化。按照作者的说法我应该可以去:

/api/data/v8.2/GetAllTimeZonesWithDisplayName(LocaleId=1033)

但这会导致如下错误:

{   
  "error":
  {
    "code":"",
    "message":"Resource not found for the segment 'GetAllTimeZonesWithDisplayName'.",
    "innererror":{
      "message":"Resource not found for the segment 'GetAllTimeZonesWithDisplayName'.",
      "type":"Microsoft.OData.Core.UriParser.ODataUnrecognizedPathException"
      ,"stacktrace":...
    }
  } 
}

所以我查看了元数据 (/api/data/v8.2/$metadata),发现此方法需要两个参数(我认为)

<Function Name="GetAllTimeZonesWithDisplayName" IsBound="true">
  <Parameter Name="entityset" Type="Collection(mscrm.timezonedefinition)" Nullable="false"/> 
  <Parameter Name="LocaleId" Type="Edm.Int32" Nullable="false"/> 
  <ReturnType Type="Collection(mscrm.crmbaseentity)" Nullable="false"/> 
</Function>

但我不知道 entityset 参数需要什么,它似乎没有在 MSDN documentation

中列出

根据元数据,函数绑定到实体集Parameter Name="entityset" Type="Collection(mscrm.timezonedefinition)" Nullable="false"/>意味着您应该从实体集开始。而且,我不知道为什么,绑定函数的使用需要完整的函数名称,所以结果将是:

/api/data/v8.2/timezonedefinitions/Microsoft.Dynamics.CRM.GetAllTimeZonesWithDisplayName(LocaleId=1033)