首页 > 解决方案 > WebAPI 可编辑的只读字段

问题描述

是否可以使用 Azure DevOps/TFS WebAPI 来编辑 READONLY workItem 字段?

我尝试像往常一样更改该字段,但与该字段在 VisualStudio 或 Azure 网页中只读的方式相同,您无法使用 UpdateWorkItem webApi 调用进行等效更改。

简化如下:

using (WorkItemTrackingHttpClient wiClient = new WorkItemTrackingHttpClient(new Uri(devOpsServerHost), credentials)) {
    WorkItem wi = wiClient.GetWorkItemAsync(workItemId).Result;

    JsonPatchDocument patchDoc = new JsonPatchOperation[] {
        new JsonPatchOperation()
        {
            Operation = operation, // Add or Replace
            Path = "/fields/Microsoft.VSTS.Scheduling.OriginalEstimate",
            Value = estimated // a float
        }
    });

    return wiClient.UpdateWorkItemAsync(patchDoc, workItemId, bypassRules).Result;
}

我正在尝试让 workItem 字段可通过外部 API 进行编辑,并与进行更改的用户相关联,而同一用户无法直接编辑该字段。例如,用户在外部应用程序中设置了多个任务,并且联合估计被更新到 TFS 工作项中。

作为奖励,我希望对其进行更改以不阻止保存 workItem 版本。readonly 字段给了我希望,尽管我相信这可能是不可能的。

标签: c#tfstfs-workitem

解决方案


我正在尝试使 workItem 字段可通过外部 API 进行编辑并与进行更改的用户相关联,而同一用户无法直接编辑该字段

但是,目前不支持通过 API 更改 READONLY 工作项字段的值。

如果您将字段设为 READONLY,则无法在页面上或通过 API 对其进行编辑。

另一种可能不是那么完美的替代方法是在每次执行 API 时以编程方式使该字段可编辑,然后在编辑后使其成为 READONLY。您可以使用 REST API字段 - 更新

PATCH https://dev.azure.com/{organization}/_apis/work/processes/{processId}/workItemTypes/{witRefName}/fields/{fieldRefName}?api-version=6.0-preview.2

这是一个示例请求正文:

{
  "readOnly": true
}

推荐阅读