如何通过Web API在Dynamics365中创建SharepointDocumentLocation
问题根因
你遇到的报错由三个常见错误导致:
- 误用不存在的导航属性:
sharepointdocumentlocation_parent_sharepointsite并非云版Dynamics 365底层Dataverse平台中sharepointdocumentlocation实体的合法导航属性。 - 混淆导航属性方向:你传入的
customEntity_SharePointDocumentLocations@odata.bind是1对多关系的集合导航属性,作用是从自定义实体反查关联的所有文档位置,不能在创建文档位置时用于单记录关联绑定。 - 不符合多态查找绑定规则:
ParentLocationOrSite和RegardingObjectId都属于多态查找字段(可关联多种实体类型的记录),Dataverse OData v4接口不支持直接对多态字段本身加@odata.bind传参,必须使用对应目标实体类型的专属单值导航属性。
正确传参规则
两个核心字段的绑定方式如下:
- 父级对象(
ParentLocationOrSite)绑定:- 父级为SharePoint站点时,使用导航属性
parentsiteorlocation_sharepointsite@odata.bind - 父级为上级SharePoint文档位置时,使用导航属性
parentsiteorlocation_sharepointdocumentlocation@odata.bind
- 父级为SharePoint站点时,使用导航属性
- 业务对象(
RegardingObjectId)绑定:- 关联任意实体(含自定义实体)时,使用导航属性
regardingobjectid_<目标实体逻辑名>@odata.bind - 禁止使用1对多方向的集合导航属性,必须使用多对一方向的单值导航属性
- 关联任意实体(含自定义实体)时,使用导航属性
- 格式要求:所有
@odata.bind的参数值必须为以/开头的实体相对路径,格式为/<实体集名>(记录ID)
正确请求示例
针对你的场景,可直接参考以下POST请求:
POST /api/data/v9.2/sharepointdocumentlocations Accept:application/json Authorization: Bearer <替换为你的有效JWT令牌> Content-Type:application/json OData-Version: 4.0 OData-MaxVersion: 4.0 { "name": "WebDocuments", "description": "Some useful description", "parentsiteorlocation_sharepointsite@odata.bind": "/sharepointsites(0f66e9e3-5dfc-ec11-82e5-0022489f9669)", "relativeurl": "site", "regardingobjectid_my_customentity@odata.bind": "/my_customentities(a654d179-ab61-ec11-8f8f-000d3a64d05c)" }
注意:如果你的自定义实体集名不是
my_customentities,请替换为实际值。自定义实体默认实体集名为实体Schema名加s,可通过实体元数据查询确认。
前置校验项
调用接口前请确认以下配置,避免接口返回成功但文档管理功能异常:
- 目标自定义实体已在Dynamics 365中启用SharePoint文档管理功能
- 绑定的SharePoint站点记录在Dynamics 365中处于有效、验证通过的状态
- 调用接口所用的用户/应用账号对
sharepointdocumentlocations、目标自定义实体、sharepointsites实体拥有创建、读取权限
内容的提问来源于stack exchange,提问作者marc_s
相关产品推荐
相关产品推荐

