How to create a custom middleware in Asp.net Core 1.0

Krishna KV
 
Team Leader, Aspire Systems
March 5, 2017
 
Rate this article
 
Views
3312

The main feature of a middleware is to handle requests and response that is passed through its pipeline. In this article, we can see how to create a custom middleware for Asp.Net Core

 public class ResponseMsg
     {
         private readonly RequestDelegate next;
 
         public ResponseMsg(RequestDelegate next)
         {
             this.next = next;
         }
 
         public async Task Invoke(HttpContext context)
         {
             await context.Response.WriteAsync("Before next Pipeline");
             await next.Invoke(context);
             await context.Response.WriteAsync("After the pipeline");
 
         }
     }

Invoke Method

The invoke method will take the HttpContext as parameter, the method can call the next application pipeline. The invoke method can have additional parameter and it can be populated through the dependency injection.

To add the middleware to application pipeline

 public class Startup
     {        
         public void ConfigureServices(IServiceCollection services)
         {           
         }       
         public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
         {          
             app.UseMiddleware<ResponseMsg>();
             app.Run(async context =>  await context.Response.WriteAsync("In startup"));
         }
     }

Middleware using Dependency injection

 public interface IApplicationMsg
     {
         void AddMessage(HttpContext context);
     }
 public class ApplicationMsg : IApplicationMsg
     {      
         public void AddMessage(HttpContext context)
         {
             context.Response.WriteAsync("Application Msg!!");
           
         }
     }

Add the Service using the dependency injection.

 public class Startup
     {        
         public void ConfigureServices(IServiceCollection services)
         {
             services.AddTransient<IApplicationMsg, ApplicationMsg>();
         }       
         public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
         {
             app.UseMiddleware<ApplicationMsgMiddleware>();
             app.Run(async context =>  await context.Response.WriteAsync("In startup"));
         }
     }

AddSingleton – It is a Singleton service which creates a single instance throughout the application.

AddTransient- It is stateless service services are created each time they are requested

AddScoped – It is created for one per request.

How to add the custom middleware component with pipeline

 public static class CustomMiddleWareBuilder
     {
         public static void UseMessage(this IApplicationBuilder builder)
         {
             builder.UseMiddleware<ApplicationMsgMiddleware>();
         }
     }
 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
             app.UseMessage();
    }
 
Category : Windows

Author Info

Krishna KV
 
Team Leader, Aspire Systems
 
Rate this article
 
Krishna K.V has been working in IT Industry for over 7+ years. He holds a Master Degree in Information Technology. He is more interested to learn and share new technologies, ...read more
 

Leave a comment