c# - 如何使用 TFS REST API 作为指定用户更改工作项
问题描述
我需要以特定用户身份对 TFS 工作项进行更改,但对于 TFS REST API。
所以:
new WorkItemTrackingHttpClient(new Uri("http://server:8080/tfs"), new VssCredentials(...));
我的下一步是什么?
解决方案
不支持 Rest API 中的模拟用户,它在 SOAP API 中受支持。
这里有一个用户声音来建议该功能,您可以去投票以在将来的版本中实现...
要使用 REST API 更新工作项,您可以尝试以下示例
public class TFSClient
{
public WorkItemTrackingHttpClient WorkItem { get; set; }
public TFSClient()
{
VssCredentials vssCred = new VssCredentials(new WindowsCredential(true));
WorkItem = new WorkItemTrackingHttpClient(new Uri(TFSServer.Url), vssCred);
}
}
public static object UpdateWorkItemByID(int id)
{
try
{
JsonPatchDocument patchDocument = new JsonPatchDocument
{
new JsonPatchOperation()
{
Operation = Operation.Add,
Path = ItemField.History,
Value = "Teste"
}
};
return new TFSClient().WorkItem.UpdateWorkItemAsync(patchDocument, id).Result;
}
catch (Exception e)
{
throw e;
}
}
您还可以通过直接使用特定用户调用 REST API 来更新工作项:
例如:
VssCredentials c = new VssCredentials(new Microsoft.VisualStudio.Services.Common.WindowsCredential(new NetworkCredential("username", "password", "domain")));
交替使用 PowerShell:
Param(
[string]$baseurl = "http://server:8080/tfs/DefaultCollection",
[string]$workitemid = "39",
[string]$user = "Domain\user",
[string]$token = "password"
)
# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
write-host $WorkitemType
function CreateJsonBody
{
$value = @"
[
{
"op": "test",
"path": "/rev",
"value": 7
},
{
"op": "add",
"path": "/fields/System.Title",
"value": "test0909ddd"
}
]
"@
return $value
}
$json = CreateJsonBody
$uri = "$baseurl/_apis/wit/workitems/$($workitemid)?api-version=2.2" #_apis/wit/workitems/"+"$"+"bug?api-version=2.2"
Write-Host $uri
$result = Invoke-RestMethod -Uri $uri -Method Patch -Body $json -ContentType "application/json-patch+json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
推荐阅读
- r - R studio:更改所有 585 行名称
- c - 写C函数产生不可读的文件
- c# - 无法在 C++/WinRT Xaml Islands 项目中使用来自 C# WinRT 组件的 Xaml 组件
- javascript - 在 Typescript 中过滤整数数组 - Angular 2
- c# - Xamarin Forms 中的全局资源
- python - 将时间转换为数据时间格式,保持“AM/PM”
- html - CSS Dropcap Bootstrap 5
- python - 在 PySpark 中使用列条件替换空值
- sql - 计算具有相同 id 的列的值的存储过程
- built-in - 如何覆盖 Autodesk 内置查看器扩展