CursosEmpresasBlogLiveConfPrecios

Atributos para verbos HTTP

Clase 8 de 22 • Curso de APIs con .NET

Clase anteriorSiguiente clase

Contenido del curso

Introducción a API en .NET

  • 1
    Domina las API con .NET

    Domina las API con .NET

    02:50 min
  • 2
    Prerrequisitos

    Prerrequisitos

    02:36 min
  • 3
    ¿Qué es una API?

    ¿Qué es una API?

    04:22 min
  • 4
    ¿Qué es REST?

    ¿Qué es REST?

    08:18 min
  • 5
    Creando tu primera API con .NET

    Creando tu primera API con .NET

    04:04 min

Funcionamiento de una API en .NET

  • 6
    Consumiendo API desde Postman

    Consumiendo API desde Postman

    05:33 min
  • 7
    Análisis del template para APIs de .NET

    Análisis del template para APIs de .NET

    10:51 min
  • 8
    Atributos para verbos HTTP

    Atributos para verbos HTTP

    Viendo ahora
  • 9
    Manejo de rutas

    Manejo de rutas

    09:51 min
  • 10
    Minimal API vs. Web API

    Minimal API vs. Web API

    08:36 min

Arquitectura y configuración

  • 11
    ¿Qué son los middlewares?

    ¿Qué son los middlewares?

    08:54 min
  • 12
    Creando un nuevo middleware

    Creando un nuevo middleware

    14:46 min
  • 13
    Inyección de dependencias

    Inyección de dependencias

    16:43 min
  • 14
    Agregando Logging a API

    Agregando Logging a API

    09:25 min
  • 15
    Documentando API con Swagger

    Documentando API con Swagger

    08:03 min

Manipulación de datos con Entity Framework

  • 16
    Agregando librerías para Entity Framework

    Agregando librerías para Entity Framework

    04:38 min
  • 17
    Configuración de Entity framework y clases base

    Configuración de Entity framework y clases base

    08:31 min
  • 18
    Creación de servicios

    Creación de servicios

    12:24 min
  • 19
    Inyectando servicios como dependencia

    Inyectando servicios como dependencia

    04:43 min
  • 20
    Creando controladores

    Creando controladores

    11:32 min
  • 21
    Probando API con una base de datos SQL server

    Probando API con una base de datos SQL server

    14:03 min

Outro

  • 22
    Retrospectiva: APIs con .NET

    Retrospectiva: APIs con .NET

    03:05 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads
        Marcos Avila Rodriguez

        Marcos Avila Rodriguez

        student•
        hace 4 años

        Si no quieres usar otra app para probar el api. Te recomiendo la extensión Thunder Client de Ranga Vadhineni. De esta forma solo necesitaras VSCode.

          Miguel Teheran

          Miguel Teheran

          teacher•
          hace 4 años

          buena alternativa

          Mauricio Carrasco

          Mauricio Carrasco

          student•
          hace 2 años

          No conocía esa, pero suena interesante, yo uso REST Client y ya me acostumbré :D

        Jose Antonio Diaz Urbano

        Jose Antonio Diaz Urbano

        student•
        hace 3 años

        Tengo la sensación de que estoy copiando código sin que me estén explicando del todo qué estoy haciendo. Hay muchas cosas dentro del código que estamos manejando que no se han explicado en los cursos anteriores y en lo que llevamos de este tampoco. A mi parecer todo es demasiado abstracto si nunca has estado ligado al mundo backend.

        Otra cosa más es que después de muchos cursos en la ruta de backend con c# y .NET tengo la sensación de que no sería capaz ahora mismo de crear nada que pudiera ser de utilidad en un proyecto o que se parezca mínimamente a un proyecto real. Incluso con los cursos de iniciación recuerdo que me preguntaba bastante "y esto para qué me va a servir?"

        Aun no tengo claro si todo el esfuerzo está mereciendo la pena...

        PD: en todos los cursos veo muchísima gente en los comentarios comentando cosas avanzadas, como si ya vinieran de otros lenguajes de backend o incluso personas que saben C# y vienen a asentar bases. Entiendo que para ellos les pueda resultar más fácil entender las cosas pero no se si alguien como yo que venía con 0 conocimientos en POO y backend en general le merece mucho la pena

          Luis Covarrubias

          Luis Covarrubias

          student•
          hace 3 años

          Entiendo tu sentir, yo también pase por lo mismo cuando me adentre al mundo del desarrollo. Y vas a seguir sintiendo que nada de esto es práctico hasta que te enfrentes a un proyecto real, hasta ese momento todas estas clases tendrán sentido. Mi recomendación es que termines la ruta de aprendizaje y luego ya comiences con un proyecto real; tal vez desarrollando algún crud o un blog. Esa sería mi humilde recomendación.

          Jose Ignacio Hernandez Villafuerte

          Jose Ignacio Hernandez Villafuerte

          student•
          hace 2 años

          Es verdad

        Marcos Lanuza

        Marcos Lanuza

        student•
        hace 3 años

        Una forma sencilla para evitar que se introduzca un ID que esté fuera del rango de la lista:

        [HttpDelete("{index}")] public IActionResult Delete(int index) { if (ListWeatherForecast.Count < index) { return BadRequest("The given ID is out of bounds."); } ListWeatherForecast.RemoveAt(index); return Ok("Forecast was successfully removed."); }
          Jose Elias Cruz Perez

          Jose Elias Cruz Perez

          student•
          hace 3 años

          could you update this line: if (ListWeatherForecast.Count <= index)

        Platzi Team

        Platzi Team

        student•
        hace 3 años

        Atributos para verbos HTTP


        En ***.NET***, puedes usar atributos para especificar qué verbo HTTP se debe usar para un método en un controlador de API. Aquí hay algunos de los atributos más comunes:

        1. HttpGet: Este atributo se usa para indicar que un método en el controlador debe responder a las solicitudes HTTP GET. Por ejemplo, si quieres obtener un recurso, puedes enviar una solicitud GET a la API.
        2. HttpPost: Este atributo se usa para indicar que un método en el controlador debe responder a las solicitudes HTTP POST. Por ejemplo, si quieres crear un nuevo recurso, puedes enviar una solicitud POST a la API.
        3. HttpPut: Este atributo se usa para indicar que un método en el controlador debe responder a las solicitudes HTTP PUT. Por ejemplo, si quieres actualizar un recurso existente, puedes enviar una solicitud PUT a la API.
        4. HttpDelete: Este atributo se usa para indicar que un método en el controlador debe responder a las solicitudes HTTP DELETE. Por ejemplo, si quieres eliminar un recurso existente, puedes enviar una solicitud DELETE a la API.
        [HttpDelete("{index}")] public IActionResult Delete(int index){ ListWeatherForecast.RemoveAt(index); return Ok(); }
        • El atributo HttpDelete especifica que este método responde a las solicitudes HTTP DELETE. Además, la ruta especificada en el atributo ({index}) indica que la posición del elemento a eliminar se pasa como un parámetro en la URL.
        • Por ejemplo, si la lista de pronósticos del tiempo tiene un elemento en la posición 3, puedes enviar una solicitud DELETE a /api/weatherforecast/3 para eliminar ese elemento.
        • El método devuelve un resultado de acción (IActionResult) que indica el resultado de la acción que se realizó. En este caso, se devuelve un resultado de acción Ok que indica que la acción se realizó correctamente y no hubo ningún error
        Elmer Alexander Gómez Cos

        Elmer Alexander Gómez Cos

        student•
        hace 3 años

        Para los que estén utilizando visual studio, en el verbo Get viene creado el método que el instructor creo por aparte y cuando se intenta ingresar datos en postman en teoría se ingresan pero nunca se visualizan, a un inicio pensé que seria por el .ToList(); que utiliza el instructor y en el método que crea por default visual studio viene .ToArray(), los cambie a manera de ponerlos igual e intente insertar y lo mismo en teoría se inserto pero cuando iba a visualizar no aparecían.

        Mi solución fue volarme el método que me crea visual studio en el GET y adaptarlo tal cual como lo tiene el instructor.

        para que se ubiquen mejor, les dejo esta imagen de referencia.

        solucion2.png

        Asi tendria que quedar.

        solucion3.png
        Brandon López Falfán

        Brandon López Falfán

        student•
        hace 4 años

        Si te ocasionó algún conflicto el código a la hora de compilar tu proyecto, quizás se deba al uso de Random:

        TemperatureC = Random.Shared.Next(-20, 55),

        Random.Shared es exclusivo para .Net 6 y muy posiblemente tengas una versión de net core inferior a la 6.

        Para una pronta solución y probar tu ejemplo puedes copiar el siguiente bloque y sustituirlo donde debe:

        public WeatherForecastController(ILogger<WeatherForecastController> logger) { _logger = logger; var random = new Random(); if(ListWeatherForecast == null || !ListWeatherForecast.Any()) { ListWeatherForecast = Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateTime.Now.AddDays(index), TemperatureC = random.Next(-20, 55), Summary = Summaries[random.Next(Summaries.Length)] }) .ToList(); } }

        Donde hemos instanciado un objeto Random a una variable que va a sustituir a .Shared previamente a la asignación de valores de nuestra lista y así evitarnos un error al compilar.

        Edinson Jesús Paternina Rivera

        Edinson Jesús Paternina Rivera

        student•
        hace 3 años

        Excelente explicacion, aunque se deberia ahondar mas en los tipos de respuestas de IActionResult

        Diego Fernando Pallares Ramirez

        Diego Fernando Pallares Ramirez

        student•
        hace 3 años

        No se si a alguien mas le pase pero, cuando hago Get de primera solo muestra las llaves [], cuando hago el post y luego el Get ahy si muestra información, y el get siempre me vota datos aleatorios y siempre 5, si elimino sale que se ejecuto pero al mirar todos los datos cambiaron y me aparece 5 datos aleatorios nuevamente, y cuando hago post y miro con el get no se me agrega un 6 dato.

          Diego Fernando Pallares Ramirez

          Diego Fernando Pallares Ramirez

          student•
          hace 3 años

          ya vi mi error por si ha alguien mas le ha pasado, era porque no estaba negado la condición del if con el sigo !

          !ListWeatherForecast.Any()

        Charly Johan Manrique Gómez

        Charly Johan Manrique Gómez

        student•
        hace 4 años

        buena noche, con que teclas se detiene la ejecución en visual studio code ?

          Esteban Vallejos

          Esteban Vallejos

          student•
          hace 4 años

          Ctrl + C

        Fernando Sanchez

        Fernando Sanchez

        student•
        hace 3 años

        IActionResult ... Ok(); por que de esa forma ?

          Miguel Teheran

          Miguel Teheran

          teacher•
          hace 3 años

          IActionResult es una interfaz generica que me permite devolver multiples respuestas http. Ok se devuelve cuando la operación fue exitosa y se puede incluir un cuerpo en el mensaje.

          también puedes devolver BadRequest(), NotFound() y este tipo de resultados de acuerdo al escenario e igualmente en el tipo de respuesta seria IActionResult esa es la ventaja de usar esa interfaz generica

        JUAN PABLO MAYORGA MENDIETA

        JUAN PABLO MAYORGA MENDIETA

        student•
        hace 2 años

        Siendo honesto me parece que esta nueva interfaz va muy bien. Sin embargo, me parece que los comentarios deberian seguir llevando una marac de tiempo, con eso sabemos cuanto tiempo aproximadamente lleva el curso. Es un tema de transparencia por parte de platzi, hay cursos muy buenos como este que pueden tener muvha vigencia pero otros muy antiguos que deben ser actualizados. Considero que platzi deber consiente de eso

        FELIX EVR

        FELIX EVR

        student•
        hace 2 años

        ¿Que hace esta línea de código?:

        private readonly ILogger<WeatherForecastController> _logger;

        Esta línea declara una propiedad miembro privada llamada _logger. Esta variable es del tipo ILogger<WeatherForecastController>.

        El tipo ILogger<T> es una interfaz proporcionada por el framework ASP.NET Core para registrar mensajes de registro (logs) en la aplicación. En este caso, ILogger<WeatherForecastController> indica que esta instancia particular del logger está asociada con la clase WeatherForecastController.

        El objetivo principal de tener esta instancia de logger es permitir que el controlador WeatherForecastController registre mensajes de registro (logs) mientras maneja las solicitudes HTTP.

        Daniel Andrés Pinto Ortega

        Daniel Andrés Pinto Ortega

        student•
        hace 3 años

        Verbos HTTP:

        Get Post Delete Put Patch

        Cristina Tinoco

        Cristina Tinoco

        student•
        hace 3 años

        Hola. ¿Cuál es la función que cumple el atributo Name? Muchas gracias.

        [HttpGet(Name = "GetWeatherForecast")]
          Miguel Teheran

          Miguel Teheran

          teacher•
          hace 3 años

          Especifica el nombre del endpoint, normalmente es el nombre del método

          Miguel Teheran

          Miguel Teheran

          teacher•
          hace 3 años

          Permite colocarle un nombre especifico al endpoint al momento de ser llamado

        Luis Eduardo

        Luis Eduardo

        student•
        hace 4 años

        Que significa Ilogger?

          Miguel Teheran

          Miguel Teheran

          teacher•
          hace 4 años

          la I se utiliza para indicar Interface. respecto al concepto de log o logging puedes revisar esta documentación: https://es.wikipedia.org/wiki/Log_(inform%C3%A1tica)

        JOSE CATAGUA

        JOSE CATAGUA

        student•
        hace 3 años

        cuando intento el POST en postman me sale esto en el termmina "Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3] Failed to determine the https port for redirect."

          Miguel Teheran

          Miguel Teheran

          teacher•
          hace 3 años

          Intenta eliminando este middleware: app.UseHttpsRedirection();

          Y también instalando los certificados usando este comando: dotnet dev-certs https --trust

        Juan David Rodriguez Triana

        Juan David Rodriguez Triana

        student•
        hace 3 años

        Buenos dias, como puedo tambien recibir en el post un json, en dado caso de que desde una peticion post desde el front vengan varios registros? estuve leyendo y tiene algo que ver con serizalizar la respuesta, como se puede agregar eso en .net?

          Miguel Teheran

          Miguel Teheran

          teacher•
          hace 3 años

          Debes indicar que vas a mandar un string que incluye el Json, luego puedes usar la librería NewtonSoft.Json o System.Text.Json para realizar al serialización de manera manual. Puedes crear una clase como

          public class DataJson { public string Data {get;set;} }

        Caffè Latte

        Caffè Latte

        student•
        hace 3 años

        Una pregunta, en la documentación oficial de Microsoft para hacer APIs con Controladores utiliza métodos asíncronos con el async/await y Task, ¿Es recomendado utilizar esto en vez de los métodos síncronos actuales?

          Miguel Teheran

          Miguel Teheran

          teacher•
          hace 3 años

          Si totalmente, lo ideal siempre usar el async y el await

        José Ángel Soriano Soriano

        José Ángel Soriano Soriano

        student•
        hace 4 años

        Al compilarlo en VCode con el comando dotnet run, me genera el sig. erro lo cierro me voy a visual studio no me genera ningun problema...

        Compilando... C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 1 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 2 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 4 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 5 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 6 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 7 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 8 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 9 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 10 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): error MSB3027: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se superó el número de 10 reintentos. Error. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): error MSB3021: No se puede copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] PS C:\platzi\webapi> dotnet run Compilando... C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 1 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 2 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 3 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 4 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 5 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 6 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 7 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 8 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 9 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): warning MSB3026: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se iniciará el reintento 10 dentro de 1000ms. The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): error MSB3027: No se pudo copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". Se superó el número de 10 reintentos. Error. [C:\platzi\webapi\webapi.csproj] C:\Program Files\dotnet\sdk\6.0.203\Microsoft.Common.CurrentVersion.targets(5096,5): error MSB3021: No se puede copiar "C:\platzi\webapi\obj\Debug\net6.0\apphost.exe" en "bin\Debug\net6.0\webapi.exe". The process cannot access the file 'C:\platzi\webapi\bin\Debug\net6.0\webapi.exe' because it is being used by another process. [C:\platzi\webapi\webapi.csproj]

        No se pudo llevar a cabo la compilación. Corrija los errores de compilación y vuelva a ejecutar el proyecto.

          Miguel Teheran

          Miguel Teheran

          teacher•
          hace 4 años

          Este error ocurre cuando la aplicación esta amarrada por otro proceso. puede ser que tengas Visual Studio corriendo con la App o que tengas una terminal abierta y no la has cerrado. Si no encuentra donde esta la App ejecutandose entonces puede reiniciar el PC e intentar de nuevo con dotnet run

        Alvaro Augusto Perea Ospina

        Alvaro Augusto Perea Ospina

        student•
        hace 2 años

        Para esta clase en especifico, el profesor deberia aclarar que en el controlador "WeatherForecast" el tipo de dato Date es DateOnly.

        Deberia aclarar que en el constructor se debe cambiar de DateOnly, a DateTime para no sacar errores.

          Christian Chancay

          Christian Chancay

          student•
          hace 8 meses

          if(ListWeatherForecast == null || !ListWeatherForecast.Any())        {                 ListWeatherForecast = Enumerable.Range(1, 5).Select(index => new WeatherForecast                {                                       Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), // Usamos DateOnly                    TemperatureC = Random.Shared.Next(-20, 55),                    Summary = Summaries[Random.Shared.Next(Summaries.Length)]                                                })                .ToList();                             }