Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to implement global.asax events by OWIN

from asp.net 6 there would be no file called global.asax but global.asax has many events like

· Application_Init

· Application_Start

· Session_Start

· Application_BeginRequest

· Application_EndRequest

· Application_AuthenticateRequest

· Application_Error

· Session_End

· Application_End

say for example i often work with Application_BeginRequest event to redirect user. here is a sample code

protected void Application_BeginRequest(Object sender, EventArgs e)
{
            if (HttpContext.Current.Request.Url.ToString().ToLower().Contains("content.aspx?content=gm-mdi-diagnostic-tool"))
            {
                Response.RedirectPermanent("http://shop.bba-reman.com/product-category/diagnostic-tools/oem-diagnostic-tools/", true);
            }
            else if (HttpContext.Current.Request.Url.ToString().ToLower().Contains("content.aspx?content=landrover_rover_t4_testbook_lite_diagnostic_tool_ids"))
            {
                Response.RedirectPermanent("http://shop.bba-reman.com/shop/oem-diagnostic-tools/land-rover-t4-mobile/", true);
            }
            else if (HttpContext.Current.Request.Url.ToString().ToLower().Contains("content.aspx?content=ford_ids_main_dealer_tool_mazda_jaguar_landrover"))
            {
                Response.RedirectPermanent("http://shop.bba-reman.com/product-category/diagnostic-tools/oem-diagnostic-tools/", true);
            }
            else if (HttpContext.Current.Request.Url.ToString().ToLower().Contains("content=coda_fuelling_tester_dynamically_measure_fuel_flow_and_pressure_in_situ_under_load"))
            {
                Response.RedirectPermanent("http://shop.bba-reman.com/product-category/diagnostic-tools/", true);
            }
}            

so tell me how to do the same with OWIN ? discuss with code sample.

also tell me how to capture session start / end or application start or end from OWIN class code ?

please discuss thanks

like image 548
Mou Avatar asked Feb 29 '16 17:02

Mou


People also ask

Is global ASAX mandatory in MVC?

We know that Global. asax is an optional file to handle Application level event in ASP.NET application.

What is Application_Start in global ASAX?

The Application_Start and Application_End methods are special methods that do not represent HttpApplication events. ASP.NET calls them once for the lifetime of the application domain, not for each HttpApplication instance.

What is the use of Owin middleware?

OWIN allows web apps to be decoupled from web servers. It defines a standard way for middleware to be used in a pipeline to handle requests and associated responses. ASP.NET Core applications and middleware can interoperate with OWIN-based applications, servers, and middleware.


1 Answers

If you need to execute some custom before each request, I recommend you to use the standard way : create a middleware and insert it in the HTTP request pipeline.

There is many ways to create a middleware, but for clarity and maintainability, create a new class is a good choice. Here is an exemple :

public class MyMiddleware
{
  private readonly RequestDelegate next;

  public MyMiddleware(RequestDelegate next)
  {
    this.next = next;
  }

  public async Task Invoke(HttpContext context)
  {
    this.BeginInvoke(context);
    await this.next.Invoke(context);
    this.EndInvoke(context);
  }

  private void BeginInvoke(HttpContext context)
  {
    // Do custom work before controller execution
  }

  private void EndInvoke(HttpContext context)
  {
    // Do custom work after controller execution
  }
}

Next it only remains to register the middleware. This is done in the Configure method of Startup class :

public class Startup
{
  public void Configure(IApplicationBuilder app)
  {
    ...
    app.UseMiddleware<MyMiddleware>();
    ...
  }
}

That's all. And forget global.asax ;-)

like image 180
gentiane Avatar answered Oct 16 '22 12:10

gentiane