You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#调用ACC Issues API创建问题时遇请求验证失败

问题排查与解决方案

一、请求验证失败原因及修复

核心问题分析

返回的验证错误提示缺少title、issueSubtypeId、status三个必填字段,根源有两点:

  • 请求体未传入API:代码中构造了请求体对象,但没有调用方法将其添加到RestRequest中,导致实际发送的请求体为空,API无法识别必填字段。
  • 字段名拼写错误:代码里写的issuesubTypeId是小写s,而ACC Issues API要求的字段名是issueSubtypeId(大写S),拼写错误会导致字段不被识别。

修复后的代码

public async Task<RestResponse> PostIssuesAsync(string userAccessToken, string projectId, string subTypeId, string title, string description, string itemId)
{
    string BASE_URL = "https://developer.api.autodesk.com";
    string POST_ISSUES = "/construction/issues/v1/projects/{projectId}/issues";

    string projectIdEdited = projectId.Split(".")[1];
    RestClient client = new RestClient(BASE_URL);
    RestRequest request = new RestRequest(POST_ISSUES, Method.Post);
    request.AddParameter("projectId", projectIdEdited, ParameterType.UrlSegment);
    request.AddHeader("Authorization", "Bearer " + userAccessToken);
    request.AddHeader("Content-Type", "application/vnd.api+json");

    dynamic body = new JObject();
    body.data = new JObject();
    body.data.type = "issues";
    body.data.attributes = new JObject();
    body.data.attributes.title = title;
    body.data.attributes.description = description;
    body.data.attributes.issueSubtypeId = subTypeId; // 修正字段名大小写
    body.data.attributes.published = true;
    body.data.attributes.status = "open";
    body.data.attributes.locationId = itemId; // 启用位置关联

    // 关键:将构造好的请求体添加到请求中
    request.AddJsonBody(body);

    return await client.ExecuteAsync(request);
}

二、Revit模型位置信息关联实现

要让ACC Issues在Revit中高亮对应位置,需正确设置locationId字段,步骤如下:

  1. 获取模型与元素标识
    • 从ACC Data Management API获取目标Revit模型的URN(格式类似dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6bXktcHJvamVjdC9tYXN0ZXIucnZ0)。
    • 在Revit中获取目标元素的Element ID(纯数字,如12345)。
  2. 构造locationId
    格式为:urn:adsk.wipprod:fs.file:<模型URN>::<Element ID>,示例:
    urn:adsk.wipprod:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6bXktcHJvamVjdC9tYXN0ZXIucnZ0::12345
    
  3. 关联到Issue
    将上述构造的locationId传入请求体的attributes中,如修复代码中所示,创建完成后即可在Revit中定位并高亮对应元素。

额外注意:确保用户AccessToken拥有data:write和data:read权限,且projectId、subTypeId、locationId均为ACC系统内的有效标识。

内容的提问来源于stack exchange,提问作者John Kuldeep Roshan Kerketta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 23:53:27