No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Creando un nuevo middleware

12/22
Recursos

Aportes 14

Preguntas 13

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Este comentario solo es para reconocer lo buena que estuvo esta clase y el buen docente que eres @Miguel Teheran, espero de verdad seguir viendo m谩s cursos de tu parte.

En el minuto 4:05 Miguel agrega todo el namespace para corregir un problema supuestamente porque se est谩 tomando el tipo de datos equivocado, el problema era m谩s sencillo 鈥 habia escrito 鈥淗ttpContent鈥 en lugar del correcto que era 鈥淗ttpContext鈥

Se lanz贸 una excepci贸n cuando cambi茅 de orden la ejecuci贸n del siguiente middleware.
Lo solucion茅 colocando un simple return antes de que se ejecutara el siguiente:

    public async Task Invoke (HttpContext context)
    {
        if(context.Request.Query.Any( p=> p.Key == "time"))
        {
            await context.Response.WriteAsync(DateTime.Now.ToShortTimeString());
            return;
        }
        await next(context); 


    }

Si a alguien le pasa lo mismo, espero que esto les auide a solucionarlo c;

Es el curso m谩s concreto y completo que he visto, sin tanta explicaci贸n de cosas que nada que ver

En mi caso no muestra solo la hora, a mi me muestra un error en la consola que dice:

The response has already started, the error page middleware will not be executed.

el response es 200 pero sin ningun valor de response

Hola, sinceramente vi tres veces esta clase y no entendi nada, se van mencionando conceptos que no tengo claros, en conclusi贸n, no se que hizo. Alguien me puede hacer un resumen para seguir con el curso ? Gracias.

Excelente clase!!
Definitivamente pienso borrar este middleware porque me est谩 generando m谩s problemas que beneficios, pero fue genial poder entender el concepto de middleware de una forma tan sencilla

En mis palabras dir铆a que los middlewares son procesos que se van realizando en cadena uno despu茅s del otro desde que empieza el request, hasta que se termina el proceso y se llega al endpoint que ser铆a donde devolvemos datos al usuario

Hay que anotar que al parecer con la versi贸n 7 se genera una excepci贸n implementando el c贸digo como lo ten铆a. Por lo que tuve que dejarlo de la siguiente forma

public async Task Invoke(HttpContext context){
        
        if(context.Request.Query.Any(p => p.Key == "time")){
            await context.Response.WriteAsync(DateTime.Now.ToShortTimeString());
            return;
        }

        await _next(context);
    }

Middlewares
(Programas intermedios)
鈥 La base de como funciona cada uno de los request.
鈥 Es una serie de instrucciones de c贸digo que se agregan al ciclo de vida de una petici贸n HTTP.
鈥 Provee una ejecuci贸n de peticiones a trav茅s de capas.
鈥 Facilitan la implementaci贸n de interceptores y filtros sobre las peticiones en una API.
鈥 Es mucho m谩s f谩cil ver la secuencia de comandos que se ejecutan por cada petici贸n e implementar middleware personalizados (con c贸digo a demanda ) para interceptar alg煤n request y agregar alg煤n comportamiento adicional.

Middleware **p谩gina de bienvenida **

app.UseWelcomePage();

En este video hay dos conceptos. La creaci贸n de Middlewares y tambi茅n la creaci贸n de extensiones. Muy buen ejemplo en poco c贸digo.

este curso esta excelente !!!

Creando un nuevo middleware


public class TimeMiddleware
{
	private readonly RequestDelegate _next;

	public TimeMiddleware(RequestDelegate next)
	{
		_next = next;
	}

	public async Task InvokeAsync(HttpContext context)
	{
		await _next(context);
		if (context.Request.Query.Any(x => x.Key == "time"))
		{
			await context.Response.WriteAsync(DateTime.Now.ToShortTimeString());

		}
	}
}

public static class TimeMiddlewareExtensions
{
	public static IApplicationBuilder UseTimeMiddleware(this IApplicationBuilder builder)
	{
		return builder.UseMiddleware<TimeMiddleware>();
	}
}
  • Cree una clase que implemente la interfaz IMiddleware: Debe crear una clase que implemente la interfaz IMiddleware y tenga un m茅todo llamado Invoke. Este m茅todo es el que se ejecutar谩 cuando se invoque el middleware.
  • Agregue el c贸digo personalizado: Dentro del m茅todo Invoke, puede agregar el c贸digo que desea ejecutar cuando se invoque el middleware. Por ejemplo, puede agregar l贸gica para capturar errores, realizar seguimiento de solicitudes o autenticar a un usuario.
  • La l铆nea await _next(context); en el c贸digo de un middleware se usa para continuar con la siguiente etapa en la cadena de middlewares. En otras palabras, esta l铆nea permite que el control pase al siguiente middleware en la cadena para que pueda realizar su procesamiento.
  • El objeto HttpContext que se pasa como argumento a la funci贸n InvokeAsync contiene informaci贸n sobre la solicitud HTTP actual y la respuesta que se est谩 construyendo. El argumento _next es un delegado RequestDelegate que representa la siguiente etapa en la cadena de middlewares.
  • A帽ada el middleware a la cadena de solicitudes: Finalmente, debe a帽adir el middleware a la cadena de solicitudes en el archivo program.cs . Esto se puede hacer llamando al m茅todo UseMiddleware y proporcionando una instancia de su clase de middleware personalizado.
app.UseTimeMiddleware();

Excelente profesor

Excelente Clase @Miguel Teher谩n, espero muchos cursos de tu parte.