Asp.Net Core 3.1 Middleware Kavramı – A&A – Part3

Selamlar,

Custom A&A projemizin 3. kısmı ile karşınızdayım. Konumuz Middleware.

Middleware Nedir ?

Middleware yapısı, uygulamamızın HTTP isteklerine nasıl tepki vereceğini denetleyen bir yapıdır diyebiliriz. Örneğin bir hata durumunda neler yapılacak, kullanıcı kimliği doğrulaması yapılması , cache ve loglama işlemlerini buradan yönetebiliriz.

Peki Asp.net Core da Middleware nasıl kullanılır ?

Asp.net Core da microsoftun bize sunmuş olduğu hazır middlewarelar olduğu gibi kendimizde özel middlewarelar yazabiliriz. Startup.cs altunda Configure metodunun içerisinde app.Use dediğinizde Microsoftun bize sunduğu hazır middlewareları görebilirsiniz. Bizde yazacağımız middlewarelarda Use metodu ile başlamayı unutmamalıyız.(Şart değil tabiki fakat standart)

Middleware konusunda daha detaylı bilgi için https://www.gencayyildiz.com/blog/asp-net-core-2de-middleware-yapisi-ve-kullanimi/

Biz kendi projemizde Middleware kavramını Global Exception Handling için kullanalım.

İlk önce Authentication.Infrastructure projemizin altına Middleware adında bir klasör ekleyelim. Ardından bu klasör içerisine ExceptionMiddleware.cs adında yeni bir class oluşturalım.

public class ExceptionMiddleware
{
RequestDelegate next;
public ExceptionMiddleware(RequestDelegate _next)
{
next = _next;
}

public async Task InvokeAsync(HttpContext context)
{

try
{
await next(context);
}
catch (BusinessException ex)
{
//Loglama vs
}
catch (Exception ex)
{
//Loglama vs
}


}
}

Not: BusinessException için github reposuna gidebilirsiniz.

Şimdi aynı klasör içerisine ExceptionMiddlewareExtension.cs adında ilgili Middleware kullanacağımız metodumuzu yazıyoruz.

public static class ExceptionMiddlewareExtension
{
public static IApplicationBuilder UseExceptionMiddleWare(this IApplicationBuilder builder)
{
return builder.UseMiddleware();
}
}

En son olarak Startup.cs de Configure metodunun altına gelip ilgili yerde Middlewareimizi kullanıyoruz.

            app.UseExceptionMiddleWare();

Projenin Github Linki : https://github.com/aburakbasaran/Authentication

Görüşmek üzere. İyi Kodlar.

1 Response

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Post comment