2016-12-28 13 views
0

Я разместил приложение MVC в IIS на Windows Server 2012. В моем приложении я пытаюсь получить доступ к VSTS. Но я не могу этого сделать.Не удается перейти к URL-адресу VSTS в машине Windows Server

Я попытался перейти к URL-адресу в IE сервера, там также ничего не отображается. Отображается только белый экран.

Я также пробовал добавлять входящие и исходящие правила для порта 443, но ничего не работает. В консоли отладки, в сети, он отправляет только запросы Get, и он попадает туда только. Я много раз искал Сеть, но ничего не нашел. Любая помощь будет оценена.

Я пытаюсь получить доступ к VSTS используя ниже код

WorkItemStore workItemStore = null; 
Uri collectionUri = new Uri("https://microsoft.visualstudio.com/DefaultCollection"); 
TfsTeamProjectCollection teamProjectCollection = new TfsTeamProjectCollection(collectionUri); 
workItemStore = teamProjectCollection.GetService<WorkItemStore>(); 

Project teamProject = workItemStore.Projects["*ProjectName*"]; 
WorkItemType workItemType = teamProject.WorkItemTypes["Scenario"]; 
+0

Что корпоративного брандмауэра вы настроили? Он может быть заблокирован на этом уровне ... –

+1

Включена ли настройка расширенной безопасности IE? (Диспетчер серверов> Локальный сервер) Если это так, попробуйте отключить его. –

+0

Да, включена Расширенная настройка безопасности. Если я отключу его, сможет ли приложение получить доступ к этой ссылке или мы должны сделать что-нибудь еще для этого? –

ответ

0

только Базовая аутентификация (или OAuth) поддерживается на вашем сценарии (веб-приложение, размещенного на Azure, который подключается к Visual Studio Team Services). Отключите использование старых API TFS (aka Object Model) и включите VSTS REST APIs. Выполните следующие шаги:

  • Создайте свой токен доступа: в качестве пароля будет использоваться PAT, так как для имени пользователя вы можете использовать пустую строку;
  • Для любого HTTP-запроса передайте заголовки Basic Auth, содержащие ваш PAT: вы можете сделать это с помощью любой библиотеки REST по вашему выбору, или вы можете использовать специальную библиотеку .NET с VSTS под названием Microsoft.TeamFoundationServer.Client, которая использует API-интерфейс REST под ним ,С последним следует этот пример кода для перечисления всех Команда Проекты вашего счета VSTS (те, погладить имеют доступ к):

    using System.Net.Http; 
    using System.Net.Http.Headers; 
    string credentials = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", YOUR_PATH))); 
    using (var client = new HttpClient()) 
    { 
        client.BaseAddress = new Uri("https://accountname.visualstudio.com:"); //url of our account 
        client.DefaultRequestHeaders.Accept.Clear(); 
        client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); 
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials); 
        //connect to the REST endpoint    
        HttpResponseMessage response = client.GetAsync("_apis/projects?stateFilter=All&api-version=1.0").Result; 
    
0

Вы не указали учетные данные для проверки подлинности VSTS, включить «Альтернативные учетные данные аутентификации» для вашей учетной записи и обновить свой код к следующему, а затем попробуйте еще раз:

WorkItemStore workItemStore = null; 
    Uri collectionUri = new Uri("https://microsoft.visualstudio.com/DefaultCollection"); 
    NetworkCredential nc = new NetworkCredential("alternateusername","alternatepassword"); 
    BasicAuthCredential bac = new BasicAuthCredential(nc); 
    TfsTeamProjectCollection teamProjectCollection = new TfsTeamProjectCollection(collectionUri,bac); 
    workItemStore = teamProjectCollection.GetService<WorkItemStore>(); 

    Project teamProject = workItemStore.Projects["*ProjectName*"]; 
    WorkItemType workItemType = teamProject.WorkItemTypes["Scenario"]; 
+0

Я добавил логику 'NetworkCredential' в свой код, но эта же проблема сохраняется. Я могу нормально работать на своем локальном, но на сервере только я столкнулся с проблемой. –

+0

@ G.SAbhaypal Включили ли вы альтернативные учетные данные, а затем использовали его в своем коде? –

+0

Я нахожусь в корпоративном домене, поэтому у меня нет этой опции в профиле моей учетной записи в VSTS. –

0

по умолчанию в отношении приложения, размещенного на IIS, он использует ApplicationPool идентичности, если тип аутентификации не проверка подлинности Windows, который не может получить доступ к вашему VSTS.

Таким образом, вы можете указать учетную запись для доступа к VSTS.

Простой код:

NetworkCredential cred = new NetworkCredential("[user name]", "[password]"); 
      TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri("[collection url]"), cred); 
      tpc.EnsureAuthenticated(); 

Вы также можете изменить идентичность пула приложений.

    бассейнов менеджера
  1. Open IIS> Application
  2. Выберите пул приложений> Advanced Settings (панель действий)
  3. Для свойства идентичности, нажмите кнопку ...
  4. Выберите Встроенный вариант учетной записи и выберите учетную запись

С другой стороны, в отношении Конфигурации расширенной безопасности вы можете отключить его или добавить необходимые сайты в список доверенных сайтов, если вы не хотите его отключать. (Он подскажет диалоговые окна включает в себя URL-адреса)

enter image description here

+0

Идентификатор, указанный в пуле приложений, принадлежит только мне. Он может получить доступ к vstf, но не к VSTS. Поэтому я попробую добавить код «NetworkCredential» и обновится здесь. Благодаря !! –

+0

@ G.SAbhaypal Укажите, что идентификатор пула приложений отлично подходит для меня. –

+0

Я уже дал идентификатор пула приложений как мой. Я добавил код выше в моем пакете, но все же я получаю такое же исключение. В локальном режиме он работает полностью нормально. Любая проверка проверки для VSTS на сервере, которую я могу сделать? :( –

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

  • Нет связанных вопросов^_^