【问题标题】:How can I download artifacts from teamcity 8.1.2 using C# code如何使用 C# 代码从 teamcity 8.1.2 下载工件
【发布时间】:2014-10-16 13:16:53
【问题描述】:

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

根据 TC 文档(https://confluence.jetbrains.com/display/TCD8/Accessing+Server+by+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) Unauthorized。

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

【问题讨论】:

  • 当您登录后,您有权查看文档。但是当你想通过api下载文件时,你应该准备凭证。
  • 我对此一无所知,文档 TC 中也没有任何信息。感谢您的建议,Alex Maslov 的回答很有帮助。

标签: c# http download teamcity teamcity-8.0


【解决方案1】:

下面的代码实现了你所描述的:

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");
}

我希望这会有所帮助。

【讨论】:

猜你喜欢
  • 2019-04-02
  • 1970-01-01
  • 2015-01-11
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 2012-10-16
  • 2021-12-28
  • 2015-09-26
相关资源
最近更新 更多