Mou*_*Mou 6 owin asp.net-core-mvc
从asp.net 6开始,没有名为global.asax的文件,但global.asax有很多类似的事件
·Application_Init
·Application_Start
·Session_Start
·Application_BeginRequest
·Application_EndRequest
·Application_AuthenticateRequest
· 应用程序错误
·Session_End
·Application_End
例如,我经常使用Application_BeginRequest事件来重定向用户.这是一个示例代码
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);
}
}
Run Code Online (Sandbox Code Playgroud)
那么告诉我如何用OWIN做同样的事情?与代码示例讨论.
还告诉我如何捕捉session start / end or application start or end从OWIN class code?
请讨论谢谢
gen*_*ane 16
如果您需要在每个请求之前执行一些自定义,我建议您使用标准方法:创建中间件并将其插入HTTP请求管道中.
创建中间件有很多种方法,但为了清晰和可维护性,创建一个新类是一个不错的选择.这是一个例子:
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
}
}
Run Code Online (Sandbox Code Playgroud)
接下来,它只是注册中间件.这是在Startup类的Configure方法中完成的:
public class Startup
{
public void Configure(IApplicationBuilder app)
{
...
app.UseMiddleware<MyMiddleware>();
...
}
}
Run Code Online (Sandbox Code Playgroud)
就这样.并忘记global.asax ;-)
| 归档时间: |
|
| 查看次数: |
6631 次 |
| 最近记录: |