从 WebService 连接到 Visual Studio Team Services

5

如何向TfsTeamProjectCollectionFactory.GetTeamProjectCollection提供凭据?
我正在尝试开发自己的WCF服务,从中向TFS发出请求
我需要这个WCF服务,因为我想管理我的TFS文件,而我不能在移动设备上使用Microsoft.TeamFoundation.* dll

我一直在尝试这种方法

Uri tpcAddress= new Uri("https://myserver.visualstudio.com/DefaultCollection");
TfsConnection tfsc = new TfsConfigurationServer(tpcAddress, 
        new NetworkCredential("mail@example.com", "password"));
TfsWebClient wc = new TfsWebClient(tfsc);
tfsc.Connect(ConnectOptions.IncludeServices);

第二次尝试使用从ICredentialsProvider派生的自定义类

ICredentialsProvider prov = new myCredentials();
var tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tpcAddress, prov);
tpc.EnsureAuthenticated();
tpc.Authenticate();

public class myCredentials : ICredentialsProvider
{
    public ICredentials GetCredentials(Uri uri, ICredentials failedCredentials)
    {
        return new NetworkCredential("mail@example.com", "password");
    }
    public void NotifyCredentialsAuthenticated(Uri uri)
    {
    }
}

但这只在我的机器上有效,因为我已登录到TFS。

如果您提供自己的WCF服务,为什么不将服务作为已经经过身份验证的用户(服务帐户)运行? - Christoffer
因为我正在尝试为移动用户创建此服务,以便他们可以从其团队基础架构服务器访问、编辑和删除其元素。 - csharpwinphonexaml
2个回答

0

考虑到这个背景: 本地机器:Visual Studio 2012 更新1 Web服务器:未知如果我将库嵌入到我的Web服务中,上述示例是否有效? - csharpwinphonexaml

0

我最近发现了这个解决方案:

NetworkCredential netCred = new NetworkCredential(user,pass);

BasicAuthCredential basicCred = new BasicAuthCredential(netCred);

TfsClientCredentials tfsCred = new TfsClientCredentials(basicCred);

tfsCred.AllowInteractive = false;

TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri(path), TFSCred);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接