无法通过API修改Dynamics CRM记录所有者ID问题排查
Dynamics CRM Web API 更新Account所有者请求错误排查
问题回顾
尝试通过Patch请求更新Account的所有者,请求信息如下:
- URI:
[Organization URI]/api/data/v9.0/accounts(AccountID) - 请求体:
{"ownerid@odata.bind": "/systemusers(UserID)"}
收到错误提示:
message=Error identified in Payload provided by the user for Entity :'', For more information on this error please follow this help link ... ----> InnerException : System.ArgumentException: Stream was not readable.
(后续堆栈调用信息省略)
尝试改用ownerid_accounts字段后依然失败,以下是具体排查方向及解决方案:
排查与解决
1. 确认请求头配置
必须在请求头中添加Content-Type: application/json,这是Web API正确解析JSON请求体的核心前提。如果缺少该配置,服务器无法识别请求体格式,大概率会触发“流不可读”这类解析错误。
2. 校验请求体的格式与内容
- 确保JSON格式严格合规:所有引号为英文双引号,无多余逗号,结构完整。
- 确认
UserID为有效的系统用户GUID,格式需为/systemusers(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)(GUID无需带大括号),且该用户确实存在于系统中。 - 无需使用
ownerid_accounts字段,Account实体的所有者字段就是ownerid,正确的绑定语法就是ownerid@odata.bind。
3. 检查请求流的读取状态(代码场景)
如果是通过自定义代码发送请求,需确保请求体的流处于可读取状态:
- 若使用内存流(如.NET的
MemoryStream),写入数据后必须将流位置重置到开头(执行stream.Seek(0, SeekOrigin.Begin))。 - 避免提前关闭请求体流,确保服务器能完整读取流内容。
4. 验证用户权限
确保发起请求的用户拥有Account实体的**分配(Assign)**权限,虽然当前报错指向解析问题,但权限不足也可能引发异常,测试时可先用系统管理员账号验证排除权限因素。
内容的提问来源于stack exchange,提问作者Razvan
相关产品推荐
相关产品推荐

