如何使用C#代码从teamcity 8.1.2下载工件

本文关键字:下载 teamcity 何使用 代码 | 更新日期: 2023-09-27 18:26:41

使用C#代码,我想从teamcity下载工件(zip文件)。

基于TC文件(https://confluence.jetbrains.com/display/TCD8/Accessing+服务器+通过+HTTP和)我写了这个代码

string artifactSource = @"http://testuser:testpassword@teamcity.mydomain/httpAuth/downloadArtifacts.html?buildTypeId=ExampleBuildType&buildId=lastSuccessful";
using(WebClient teamcity = new WebClient())
{
  teamcity.DownloadFile(artifactSource, @"D:'Downloads'1.zip");
}

在Visual Studio中,我获得了:System.dll中发生类型为"System.Net.WebException"的未经处理的异常附加信息:远程服务器返回错误:(401)未经授权。

当我在浏览器中键入url时,我得到了正确的响应(文件已准备好下载)。我做错了什么?我应该以不同的方式进行授权吗?

如何使用C#代码从teamcity 8.1.2下载工件

以下代码实现了您所描述的:

var artifactSource = @"http://teamcity.mydomain/httpAuth/downloadArtifacts.html?buildTypeId=ExampleBuildType&buildId=lastSuccessful";
using (var teamcityRequest = new WebClient { Credentials = new NetworkCredential("username", "password") })
{
    teamcityRequest.DownloadFile(artifactSource, @"D:'Downloads'1.zip");
}

正如您所看到的,我已经取出用户名和密码,并将它们传递给WebClient的Credentials属性。

如果您在TeamCity中启用了您的访客帐户(我在公司中也是这样做的),我还建议您考虑访客身份验证。这允许您完全不使用任何凭据。在这种情况下,您需要将url中的"httpAuth"更改为"guestAuth",代码将变为

var artifactSource = @"http://teamcity.mydomain/guestAuth/downloadArtifacts.html?buildTypeId=ExampleBuildType&buildId=lastSuccessful";
using (var teamcityRequest = new WebClient())
{
    teamcityRequest.DownloadFile(artifactSource, @"D:'Downloads'1.zip");
}

我希望这能有所帮助。