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

268
Views
¿Por qué los componentes de middleware se llaman dos veces en una canalización de .Net Core?

Si creo una aplicación ASP.net Web Core en blanco, luego reemplazo el método Configure() en Startup.cs con el siguiente método, cada operación Use() y Run() se llama dos veces.

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.Use(async (context, next) => { // Do work that doesn't write to the Response. await next.Invoke(); // Do logging or other work that doesn't write to the Response. int i = 0; }); app.Use(async (context, next) => { // Do work that doesn't write to the Response. await next.Invoke(); // Do logging or other work that doesn't write to the Response. int j = 0; }); app.Run(async context => { await context.Response.WriteAsync("Hello, World!"); }); }

Entonces el orden de las operaciones es:

  1. En la primera app.Use(), se llama await next.Invoke()
  2. En la segunda aplicación. Use(), espere a continuación. Se llama a Invoke()
  3. App.Run() se llama

Luego, regresa a través de la tubería.

  1. En la segunda app.Use(), se llama int j = 0
  2. En la primera app.Use(), se llama int i = 0

Todo esto se espera a medida que pasa a través del Middleware y viceversa. Pero luego, cada uno de los pasos anteriores se repite de nuevo.

¿Por qué cada componente de middleware se llama dos veces?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

La razón por la que se llama dos veces es porque su navegador está realizando dos solicitudes a su aplicación. Uno para la ruta raíz de la aplicación '/', el otro para /favicon.ico (algunos navegadores como Chrome hacen una solicitud de favicon de forma predeterminada, captura de pantalla a continuación ). Puede consultar las herramientas de desarrollo de su navegador.

Herramientas de desarrollo de Chrome (F12 o Ctr + Shift + I acceso directo)

También puede verificar eso colocando un registro de depuración dentro de la aplicación. app.Use para ver las rutas de solicitud. p.ej

 app.Use(async (context, next) => { Debug.WriteLine(context.Request.Path.Value); // Do work that doesn't write to the Response. await next.Invoke(); // Do logging or other work that doesn't write to the Response. int i = 0; });

Por lo tanto, la configuración de su middleware se ejecuta dos veces. Una vez para la raíz '/' y la segunda vez para la ruta '/favicon.ico'

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!