我需要通过TFS API下载TFS wiki页面附件。
从MS看,它似乎是API分配给创建的,但我似乎找不到获得它的方法。
在/_apis/wiki/wikis/{wikiIdentifier}/pages/{pageId}/attachments/{attachmentId}
上调用GET返回Method not allowed
然后,我尝试使用WIT附件API /_apis/wit/attachments/{id}
,但是那个附件没有找到附件并返回404。(我怀疑它只能访问工作项附件。)
发布于 2020-03-05 12:30:02
使用GitHttpClient.GetItemContentAsync({project}, {repositoryId}, path:{path})
哪里
path
是"/.attachments/my attached file-89553727-xxx-yyy-zzz-829fbe167411.docx"
,如wiki页面内容中所示(注意前面的/
)
发现这完全是偶然的,一旦我转移到实验GitHttpClient
和列出所有的项目在我的回购。其中一个项是一个附件,它填充了这个路径,然后我将其插入到GetItemContentAsync
方法中并查看。
我的代码:
var uri = new Uri(_tfsBaseUri);
var credentials = GetCredentials();
using (var tpc = new TfsTeamProjectCollection(uri, credentials))
{
var wikiClient = tpc.GetClient<WikiHttpClient>();
var gitClient = tpc.GetClient<GitHttpClient>();
var mypage = wikiClient.GetPageAsync(_tfsProject, _tfsWiki, "My page name", includeContent: true).GetAwaiter().GetResult();
var pageContent = mypage.Page.Content;
if (pageContent.Contains("(.attachments"))
{
var path = "";// parse out the attachment path
var attachmentContent = gitClient.GetItemContentAsync(_tfsProject, new Guid("_tfsWiki repo ID"), path: path).GetAwaiter().GetResult();
}
}
private static VssCredentials GetCredentials()
{
return new VssCredentials(new Microsoft.VisualStudio.Services.Common.WindowsCredential(CredentialCache.DefaultCredentials));
}
https://stackoverflow.com/questions/60544676
复制相似问题