gpt4 book ai didi

owin - 如何通过 OWIN 实现 global.asax 事件

转载 作者:行者123 更新时间:2023-12-04 13:18:53 26 4
gpt4 key购买 nike

从 asp.net 6 开始,将没有名为 global.asax 的文件,但 global.asax 有许多事件,例如

· Application_Init

· 申请_开始

· Session_Start

· Application_BeginRequest

· Application_EndRequest

· Application_AuthenticateRequest

· 应用程序错误

· Session_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);
}
}

所以告诉我如何用 OWIN 做同样的事情?与代码示例讨论。

还告诉我如何捕获 session start / end or application start or end来自 OWIN class code ?

请讨论谢谢

最佳答案

如果您需要在每次请求之前执行一些自定义,我建议您使用标准方式:创建一个中间件并将其插入到 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
}
}

接下来只需要注册中间件。这是在 Startup 类的 Configure 方法中完成的:
public class Startup
{
public void Configure(IApplicationBuilder app)
{
...
app.UseMiddleware<MyMiddleware>();
...
}
}

就这样。忘记 global.asax ;-)

关于owin - 如何通过 OWIN 实现 global.asax 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35705830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com