2016-12-19 3 views
1

Я использую следующий код для подключения к TFSПодключение к TFS через прокси

TfsTeamProjectCollection server = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(serverName)); 
server.EnsureAuthenticated(); 

Он отлично работает. В последнее время мы перешли из локального TFS в VSTS (в облаке). Вышеупомянутое все еще работает, но локальный прокси-сервер настроен для ускорения нашего соединения. Я могу настроить это, следуя приведенному выше коду с помощью этого:

Это, кажется, соединяется в первый раз. Но, если я перезагрузить приложение, называют `EnsureAuthenticated» терпит неудачу с исключением:

Microsoft.TeamFoundation.TeamFoundationServerUnauthorizedException: TF30063: You are not authorized to access mycorp.visualstudio.com\mycorp. 
     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.EnsureConnected(ConnectOptions optionsNeeded) 
     at Microsoft.TeamFoundation.Framework.Client.FrameworkServerDataProvider.EnsureAuthenticated() 
     at Microsoft.TeamFoundation.Client.TfsConnection.EnsureAuthenticated() 

Чтобы заставить его работать снова я обнаружил, если я брошу Visual Studio, то я могу удалить папку "C:\Users\MyUser\AppData\Local\Microsoft\Team Foundation\6.0\Cache". Когда я снова запустил приложение, он подключится нормально. Но это обходное решение не будет работать в производстве.

Как подключиться через прокси и подключиться несколько раз?

+0

В чем заключается внутреннее сообщение об ошибке? –

ответ

0

После установки Microsoft.IdentityModel.Clients.ActiveDirectory 2.28.3 package в мой проект (консольное приложение), тогда он работает нормально.

+0

Спасибо за подсказку. Несколько раз я видел другое сообщение об исключении, которое указывало на невозможность загрузить эту DLL. Я думаю, что в сообщении говорилось, что он ищет версию 2.16 из dll. Я не на 100% уверен в номере версии. Версия, которую вы мне посоветовали скачать, это 3.something. Установка его, похоже, не имеет никакого значения. Интересно, это неправильная версия. Я не могу воспроизвести получение сообщения об исключении, которое включает номер версии dlls. Теперь я получаю сообщение об исключении, которое опубликовано в вопросе. –

+0

@ScottLangham - это сообщение об ошибке Inner, так же, как вы сказали, что «у вас нет доступа к доступу». Внутреннее сообщение моего не может загрузить Microsoft.IdentityModel.Clients.ActiveDirectory 2.16. Исправлено установкой 2.28.3. С другой стороны, я использую расширенный клиентский пакет (https://www.nuget.org/packages/Microsoft.TeamFoundationServer.ExtendedClient/) –

Смежные вопросы