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.

3 Responses

    • Merhaba , yorumun için teşekkür ederim. Fakat “malesef” yazılım dünyası bu. Ben ingilizcem çok iyi olduğu için veya ingilizce bildiğim için bu şekilde paylaşım yapmadım aksine bazı terimler “Türkçe” olarak çevirilemeyecek kadar genel kabul görmüş terimlerdir. Örneğin “Configure” metodunu ayarlama metodu olarak değiştiremem microsoft’un metodu bu veya Use metodunu kullan metodu olarak çeviremem bir diğer örnek ise Custom(Customize) bu yazılım dünyasında bir nesneyi – uygulamayı alıp kendine göre özelleştirmek demektir, buna özelleştirme diyemem bu bir tabirdir. Bu örnekler uzar bu yazılım dünyasının bir gerçeği malesef.
      Ama kafa karıştıcı geldi ise size yardımcı olmaktan mutluluk duyarım.

Bir cevap yazın