Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.8K
Views
¿Por qué HttpRepl no puede encontrar una descripción de OpenAPI? El comando "ls" no muestra los puntos finales disponibles

Estoy trabajando en los tutoriales de Microsoft Learn para " Crear una API web con ASP.Net Core ".

Bajo el encabezado "Crear y probar la API web", en la instrucción (5) recibo una respuesta, "No se puede encontrar una descripción de OpenAPI".

Para el paso (6), cuando ejecuto el comando "ls", obtengo la respuesta: "No se ha establecido una estructura de directorio, por lo que no hay nada que enumerar. Use el comando 'conectar' para establecer una estructura de directorio basada en una descripción de OpenAPI". Probé el comando "conectar" sugerido aquí y probé "dir" como alternativa a "ls".

Puedo cambiar directorios con éxito en el paso (7) y ejecutar la solicitud GET para el paso (8) y recibir la respuesta esperada. Sin embargo, realmente me molesta que el comando "ls" no funcione aquí y parece una función importante de la herramienta httprepl.

¿Cómo puedo hacer que el comando "ls" funcione aquí o decirme por qué no funciona?

 C:\Users\xxxx\source\repos\Learn\ContosoPizza>httprepl http://localhost:5000 (Disconnected)> connect http://localhost:5000 Using a base address of http://localhost:5000/ Unable to find an OpenAPI description For detailed tool info, see https://aka.ms/http-repl-doc http://localhost:5000/> ls No directory structure has been set, so there is nothing to list. Use the "connect" command to set a directory structure based on an OpenAPI description. http://localhost:5000/>

RESULTADOS AÑADIDOS DE SUGERENCIAS--

 C:\Users\xxxx\source\repos\Learn\ContosoPizza>dotnet --version 3.1.412 C:\Users\xxxx\source\repos\Learn\ContosoPizza>dotnet add WebAPI.csproj package Swashbuckle.AspNetCore -v 5.6.3 Could not find project or directory `WebAPI.csproj`.

httprepl GitHub repo y página de MS Docs

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

En el paso 5 HttpRepl emite la advertencia Unable to find an OpenAPI description , lo que significa que no puede encontrar el punto final de Swagger y, por lo tanto, el comando ls no funcionará.

Supongo que está utilizando VS Code y ASP.NET Core 5.0 . Aquí está mi resultado de ejecutar dotnet --version :

 5.0.401

Si estamos usando Visual Studio , recuerde habilitar swagger cuando cree el proyecto. Estoy usando Visual Studio 2019 para crear la captura de pantalla:

ingrese la descripción de la imagen aquí

Especificando su descripción de OpenAPI

Para saber qué punto de enlace usar, abra el archivo Startup.cs y busque el fragmento de código que contiene el texto UseSwaggerUI . Deberías encontrar este bloque de código:

 if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseSwagger(); app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebAPI v1")); }

Use el punto final que encuentre y ejecute la herramienta de esta manera:

 httprepl http://localhost:5000 --openapi /swagger/v1/swagger.json

Si no encuentra ninguna referencia a swagger, consulte Ninguno de los anteriores funcionó, swagger no está instalado a continuación, para saber cómo instalar y configurar swagger para su proyecto.

Ignorando tu entorno

Si no funciona especificar el punto final de la API abierta, entonces no está ejecutando su API web en un entorno de desarrollo. Por lo tanto, use un entorno de desarrollo o elimine el comentario de la declaración if durante la prueba (para configurar su entorno para el desarrollo, consulte Cambiar su entorno a continuación):

 //if (env.IsDevelopment()) //{ app.UseDeveloperExceptionPage(); app.UseSwagger(); app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebAPI v1")); //}

Recuerde restaurar el código que descomentó, si corresponde, antes de implementarlo en producción.

Cambiando tu entorno

El perfil que usa su API web se especifica en el archivo Properties\launchSettings.json . Abra el archivo y busque ASPNETCORE_ENVIRONMENT . Luego cambie las instancias que encuentre a:

 "ASPNETCORE_ENVIRONMENT": "Development"

Si esto no funciona, o si las instancias ya estaban configuradas en "Desarrollo", significa que no está utilizando ninguno de los perfiles especificados en la configuración de inicio. Si no se utiliza ningún perfil, el valor predeterminado de ASPNETCORE_ENVIRONMENT es "Producción". Al usar el comando dotnet dotnet run , el parámetro --launch-profile le permite especificar qué perfil usar:

 dotnet run --launch-profile "name_of_profile"

Como último recurso, puede configurar la variable de entorno ASPNETCORE_ENVIRONMENT en el shell que está utilizando, antes de ejecutar el comando dotnet run :

Intento

 export ASPNETCORE_ENVIRONMENT=Development

CMD

 set ASPNETCORE_ENVIRONMENT=Development

Potencia Shell

 $env:ASPNETCORE_ENVIRONMENT='Development'

Luego ejecute la aplicación sin un perfil:

 dotnet run --no-launch-profile

Los puertos predeterminados, cuando se ejecuta sin un perfil, deben ser 5000 o 5001. Pero lea el resultado del comando para ver qué puertos asigna a su API web.

Tenga en cuenta que si usa VS Code para ejecutar su proyecto, es posible que VS Code también haya creado configuraciones de inicio en .vscode\launch.json . Depende de cómo haya configurado VS Code y de lo que le permita hacer. Encontré algunos artículos más antiguos que afirman que algunas extensiones para VS Code pueden interferir con la configuración de inicio, pero no especificaron cuáles.

Ninguno de los anteriores funcionó, swagger no está instalado

Ninguno de los anteriores funcionó, significa que no tienes Swagger instalado. Instale swagger para su proyecto y cuando haya terminado, inténtelo de nuevo.

Instalación del paquete

Abra su proyecto en VS Code y ejecute el siguiente comando desde la Terminal integrada y reemplace WebAPI.csproj con el nombre de su propio archivo de proyecto:

 dotnet add WebAPI.csproj package Swashbuckle.AspNetCore -v 5.6.3

Por supuesto, puede ejecutar el comando desde fuera de VS Code , con la carpeta de su proyecto como el directorio de trabajo actual.

Agregar y configurar el software intermedio de Swagger

Agregue el generador Swagger a la colección de servicios en el método Startup.ConfigureServices , como la última instrucción del método:

 public void ConfigureServices(IServiceCollection services) { [... other code here ...] // Register the Swagger generator, defining 1 or more Swagger documents services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebAPI", Version = "v1" }); }); }

En el método Startup.Configure , habilite el middleware para entregar el documento JSON generado y la interfaz de usuario de Swagger, en la parte superior del método:

 public void Configure(IApplicationBuilder app) { // Enable middleware to serve generated Swagger as a JSON endpoint. app.UseSwagger(); // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), // specifying the Swagger JSON endpoint. app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); }); [... other code here for setting up routing and the like ...] }

Para obtener más información sobre cómo configurar swagger, perfiles y el entorno

Comience con Swashbuckle y ASP.NET Core
Administrar la configuración de producción y desarrollo en ASP.NET Core
Utilice varios entornos en ASP.NET Core
Documentación de la API web de ASP.NET Core con Swagger/OpenAPI

over 4 years ago · Santiago Trujillo Report

0

La solución para mí fue simplemente confiar en la certificación SSL de localhost, lo cual puede hacer con este comando:

 dotnet dev-certs https --trust

Mientras hacía el mismo Tutorial, un amigo mío notó que confiar en el certificado de desarrollo ya estaba cubierto por el Tutorial, que había pasado por alto al hacer el Tutorial yo mismo. Este es el sitio de ayuda oficial: Confíe en el certificado de desarrollo HTTPS de ASP.NET Core en Windows y macOS . Tal vez esto todavía ayude a alguien con el mismo problema.

over 4 years ago · Santiago Trujillo Report

0

Debe estar conectado al servidor web a través de dotnet run.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!