我正在升級與TFS/VSTS通信以使用最新的TeamFoundation sdk的C#應用程序。使用VSTS/TFS進行身份驗證
我想以Visual Studio的相同方式連接並獲得應用程序提示輸入憑據,如果您使用它連接到TFS。
我已經下載從nuget.org最新的穩定VSTS API,它是:
microsoft.teamfoundationserver.extendedclient.15.112.1.nupkg
我還引用了它從我的VS2017採用組件安裝,在這裏:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer
。
我已經嘗試了一些組合,但無法讓它提示。我當前的代碼如下所示:
static void Main(string[] args)
{
try
{
var netCred = new NetworkCredential();
var basicCred = new VssBasicCredential(netCred);
var vssCred = new VssCredentials(basicCred);
vssCred.PromptType = CredentialPromptType.PromptIfNeeded;
var server = new TfsTeamProjectCollection(new Uri(serverName), vssCred);
server.Authenticate();
}
catch(Exception ex)
{
System.Console.WriteLine(ex.ToString());
}
System.Console.ReadKey();
}
它不提示,而是輸出此異常:
Microsoft.TeamFoundation.TeamFoundationServerUnauthorizedException: TF30063: You are not authorized to access https://.visualstudio.com/. ---> System.Net.WebException: The remote server returned an error: (401) Unauthorized. at System.Net.HttpWebRequest.GetResponse() at Microsoft.TeamFoundation.Client.Channels.TfsHttpWebRequest.SendRequestAndGetResponse(HttpWebRequest webRequest, WebException& webException) --- End of inner exception stack trace --- at Microsoft.TeamFoundation.Client.Channels.TfsHttpWebRequest.SendRequest() at Microsoft.TeamFoundation.Client.Channels.TfsHttpRequestChannel.Request(TfsMessage message, TimeSpan timeout) at Microsoft.TeamFoundation.Client.Channels.TfsHttpClientBase.Invoke(TfsClientOperation operation, Object[] parameters, TimeSpan timeout, Object[]& outputs)
at Microsoft.TeamFoundation.Framework.Client.LocationWebService.Connect(Int32 connectOptions, Int32 lastChangeId, Int32 features) at Microsoft.TeamFoundation.Framework.Client.FrameworkServerDataProvider.Connect(ConnectOptions connectOptions) at Microsoft.TeamFoundation.Framework.Client.FrameworkServerDataProvider.Authenticate() at Microsoft.TeamFoundation.Client.TfsConnection.Authenticate() at VstsAuthTest.Program.Main(String[] args) in S:\VstsAuthTest\Program.cs:line 26
我如何得到它的提示和緩存憑據?
我使用的TeamFoundation sdk dll的舊版本似乎工作正常。我升級的原因是因爲C#應用程序似乎拒絕連接到TFS安裝在只有VS2017而不是VS2015的機器上。我希望升級到最新的SDK dll可能有助於解決連接問題。
我已經看到了這一點,但它似乎已經過時,並使用了現在過時的類。這也是關於沒有提示的連接,但是評論包括一些關於如何獲得提示的討論。
我也看到了這些樣品中出現近,但也使用淘汰的API。
https://www.visualstudio.com/en-us/docs/integrate/get-started/client-libraries/samples
您應該切換到引用NuGet包的VSTS/TFS API SDK,並與您的產品包裝DLL的。不再支持依賴於Visual Studio安裝。 – jessehouwing