【发布时间】:2018-03-01 22:20:23
【问题描述】:
每当我尝试通过 REST 调用使用 TFS WorkItem 附加附件时,附件大小为 0KB。
首先我使用以下代码在附件商店中上传附件。
https://{instance}/DefaultCollection/_apis/wit/attachments?api-version=1.0&filename="{fileName}"
我通过 rest 调用以字节数组的形式发送数据。在此之后,我将该附件与工作项一起附加。
附加附件成功,但附件大小为零 KB TFS 有问题还是我做错了什么?
我使用 C# 语言进行编程,使用 REST Sharp 访问 VSTS API
Dim restClient = New RestClient("Server URL")
restClient.Authenticator = New HttpBasicAuthenticator("UserId", "Password")
Dim request = New RestRequest("API_Name", Method.POST)
request.AlwaysMultipartFormData = False
request.AddParameter(String.Format("{0}; charset=utf-8", contentType), File.ReadAllBytes(filePath), ParameterType.RequestBody)
request.RequestFormat = DataFormat.Json
Dim response As IRestResponse = restClient.Execute(request)
Return response
我以字节为单位发送文件数据。
使用 WorkItem 附加附件。
Dim restClient = New RestClient(ACCESS_URL)
restClient.Authenticator = New HttpBasicAuthenticator(USER_NAME, PASSWORD)
Dim request = New
RestRequest("CollectionName}/_apis/wit/workitems/{WorkItem_ID}", Method.PATCH)
request.AddParameter("application/json-patch+json; charset=utf-8",
"post_Data", ParameterType.RequestBody)
request.RequestFormat = DataFormat.Json
Dim response As IRestResponse = restClient.Execute(request)
Return response
Post_Data 是一个 json 字符串,它采用这种类型的数据
[{
"op": "add",
"path": "/relations/-",
"value": {
"rel": "AttachedFile",
"url": "AttachementURI",
}]
【问题讨论】:
-
您在代码中使用的“contentType”是什么?我用“application/octet-stream”内容类型测试了你的代码,它工作正常。附件大小正确,可以成功打开。
-
是的,我正在使用 application/octet-stream,但我的附件大小始终为 0K,您使用的是与我发布的完全相同的代码还是您进行了一些更改?
-
是的,几乎一样。我在答案中添加了我的代码供您参考。
标签: tfs azure-devops