Не удается перейти к VSTS url-адрес в машине Windows Server

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

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

Я попытался добавить правила входящего и исходящего также для порта 443, но ничего не работает. В debug console, под сетью, он отправляет только 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"];

3 ответа

  1. Вы не указали учетные данные для проверки подлинности на 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"];
    
  2. По умолчанию в отношении приложения, размещенного на IIS, используется идентификатор applicationpool, если тип проверки подлинности не является проверкой подлинности Windows, которая не может получить доступ к VSTS.

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

    Простой код:

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

    Также можно изменить идентификатор пула приложений.

    1. Откройте Диспетчер IIS > пулы приложений
    2. Выберите пул приложений > Дополнительные параметры (панель действий)
    3. Для свойства Identity нажмите …
    4. Выберите опцию Build-in account и выберите учетную запись

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

    Введите описание изображения здесь

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

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

      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;