He alojado una aplicación MVC en IIS en Windows Server 2012. En mi aplicación intento acceder a VSTS, pero no puedo hacerlo.

He intentado navegar a la URL en el IE del servidor, también no muestra nada. Solo se muestra una pantalla en blanco.

Intenté agregar reglas entrantes y salientes también para el puerto 443, pero nada funciona. En la consola de depuración, en la red, solo envía solicitudes de obtención y solo se activa allí. He buscado mucho en Net pero no he encontrado nada. Cualquier ayuda será apreciada.

Estoy tratando de acceder al VSTS usando el siguiente código

 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
G.S Abhaypal 28 dic. 2016 a las 13:39

3 respuestas

La mejor respuesta

Solo se admite la autenticación básica (u OAuth) en su escenario (aplicación web alojada en Azure que se conecta a Visual Studio Team Services). Olvídese del uso de las antiguas API de TFS (también conocido como Modelo de objetos) y adopte el VSTS REST APIs. Sigue estos pasos:

  • Cree su token de acceso personal: se usará un PAT como contraseña, en cuanto al nombre de usuario, puede usar una cadena vacía;
  • Para cualquier solicitud HTTP, pase los encabezados de autenticación básica que contienen su PAT: puede hacerlo con cualquier biblioteca REST de su elección, o puede aprovechar la biblioteca .NET específica de VSTS llamada Microsoft.TeamFoundationServer.Client, que utiliza las API REST debajo. Con esto último sigue este código de muestra para enumerar todos los Proyectos de equipo de su cuenta VSTS (a los que PAT tiene acceso):

    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
Luca Cappa 30 dic. 2016 a las 23:22

De manera predeterminada, con respecto a la aplicación alojada en IIS, utiliza la identidad del grupo de aplicaciones si el tipo de autenticación no es la autenticación de Windows, que no puede acceder a su VSTS.

Entonces puede especificar la cuenta para acceder a su VSTS.

Código simple:

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

También puede cambiar la identidad del grupo de aplicaciones.

  1. Abra el Administrador de IIS> Grupos de aplicaciones
  2. Seleccione el grupo de aplicaciones> Configuración avanzada (panel Acciones)
  3. Para la propiedad Identidad, haga clic en el botón ...
  4. Seleccione la opción Cuenta integrada y seleccione una cuenta

Por otro lado, con respecto a la Configuración de seguridad mejorada, puede desactivarla o agregar sitios necesarios para confiar en la lista de sitios si no desea desactivarla. (Aparecerá un cuadro de diálogo que incluye URL)

enter image description here

0
starian chen-MSFT 30 dic. 2016 a las 01:36

No especificó la credencial para autenticarse en VSTS, habilite "Credenciales de autenticación alternativas" para su cuenta y actualice su código a la siguiente e intente nuevamente:

    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
Eddie Chen - MSFT 30 dic. 2016 a las 01:35