通过.NET API获取安全的文件下载票证

时间:2018-02-21 22:55:53

标签: c# download tfs2017

使用Microsoft.TeamFoundation .NET客户端API,如何从TFS 2017u2获取安全文件的下载票证?

使用Microsoft.TeamFoundation.DistributedTasks.WebApi nuget package,我在控制台应用中填充了以下代码。它成功检索在TFS中为安全文件输入的所有元数据和关联属性。但是,尽管将“includeDownloadTicket”参数作为“true”传递给GetSecureFileAsync方法,但Ticket属性始终为null。

我认为这可能是一个权限问题,但我处于TFS管理员角色,并且还特意将自己指定为Web界面中文件条目的管理员。

var credentials = new VssCredentials();
var projectName = "{myProjectName}";
var secureFileId = new Guid("{theSecureFileId}");
var tfsUri = new Uri("https://{tfsBox}/{collection}");
var connection = new VssConnection(tfsUri, credentials);
var taskAgentClient = connection.GetClient<TaskAgentHttpClient>();
var projectClient = connection.GetClient<ProjectHttpClient>();
var project = await projectClient.GetProject(projectName, true);
var secureFile = await taskAgentClient.GetSecureFileAsync(project.Id, secureFileId, true);
var secureFileTicket = secureFile.Ticket;

if (secureFileTicket == null)
{
    Console.WriteLine(
        "No download ticket was provided by the TFS for the requested Secure File.");
    return;
}

1 个答案:

答案 0 :(得分:1)

你的想法是正确的。这与许可有关。出于安全原因,普通用户仅限于下载安全文件。您可以为普通用户设置的“读者”,“用户”和“管理员”权限,同时需要“ViewSecrets”权限才能包含下载票据。

因此,您暂时无法下载安全文件。