C# 如何在启用凭据的Jenkins上创建作业?

C# 如何在启用凭据的Jenkins上创建作业?,c#,build,jenkins,C#,Build,Jenkins,我有代码在没有启用凭据的情况下在Jenkins上创建/更新作业 const string FORMAT = "http://{0}:{1}/createItem?name={2}"; var path = string.Format( FORMAT, this.config.JenkinsServer, this.config.JenkinsPort, buildName); this.http.UploadString(

我有代码在没有启用凭据的情况下在Jenkins上创建/更新作业

const string FORMAT = "http://{0}:{1}/createItem?name={2}";
var path =
    string.Format(
        FORMAT,
        this.config.JenkinsServer,
        this.config.JenkinsPort,
        buildName);

this.http.UploadString(
    path,
    definition,
    new Header(HttpRequestHeader.ContentType, "text/xml"));
现在,我想在创建新作业时通过启用凭据和指定用户名/密码向前迈进一步。我发现了,但C#中没有代码示例,无法理解如何实现它

如何在启用凭据的情况下在Jenkins上创建/更新作业

[更新]
在url上指定用户名和密码(如中所示)也无效。

您可以使用基于用户的AUTHTOKEN向Jenkins进行身份验证。 通过转到用户配置页面获取令牌

http://{JENKINS.HOST}/user/{YOUR.USERNAME}/configure

然后单击“显示API令牌”按钮,它将显示一个GUID作为AuthToken,然后您可以将其与以下内容一起使用

string password = "5agbe1d6f774634169e9ba4625559bc83f";  // AKA the Jenkins AuthToken
string userName = "YOUR.USERNAME";                       // AKA your Jenkins userID

var webClient = new System.Net.WebClient();

// Create a basic auth token from a username and password seperated by a colon then base 64encoded
string basicAuthToken = Convert.ToBase64String(Encoding.Default.GetBytes(userName + ":" + password));
webClient.Headers["Authorization"] = "Basic " + basicAuthToken;

return client.UploadString(path, definition, headers);

System.Net.WebClient似乎没有一个名为SetBasicAuthHeader的函数,您运行的是哪个版本的.Net 4.5。堆栈翻转有一个我正在填充的最小注释长度。啊,我的错,我一定是指我写的一个扩展方法。我更新了答案以反映这一点