【问题标题】:How to address all events in global.asax file when we work with ASP.NET Core Middleware [duplicate]当我们使用 ASP.NET Core 中间件时,如何处理 global.asax 文件中的所有事件 [重复]
【发布时间】:2016-12-15 07:57:01
【问题描述】:

这里是 global.asax 文件中的主要事件列表。假设当我们为 global.asax 文件中的每个事件编写代码来处理情况以及何时使用 ASP.NET Core 中间件时,然后告诉我如何处理 ASP.NET Core 中间件中的每个事件代码。请提供一个示例代码来解决 ASP.NET Core 中间件中的所有事件。

Application_Init:

在应用程序初始化或首次调用时触发。这是 为所有 HttpApplication 对象实例调用。

Application_Disposed:

在应用程序被销毁之前触发。这是理想 用于清理以前使用的资源的位置。

Application_Error:

在遇到未处理的异常时触发 应用。

Application_Start:

在创建 HttpApplication 类的第一个实例时触发。 它允许您创建所有人都可以访问的对象 HttpApplication 实例。

Application_End:

当 HttpApplication 类的最后一个实例被销毁时触发。 它在应用程序的生命周期内只触发一次。

Application_BeginRequest:

收到应用程序请求时触发。这是第一个事件 为请求触发,该请求通常是用户的页面请求 (URL) 进入。

Application_EndRequest:

为应用程序请求触发的最后一个事件。

Application_PreRequestHandlerExecute:

在 ASP.NET 页面框架开始执行事件之前触发 处理程序,例如页面或 Web 服务。

Application_PostRequestHandlerExecute:

在 ASP.NET 页面框架完成执行事件时触发 处理程序。

Applcation_PreSendRequestHeaders:

在 ASP.NET 页面框架将 HTTP 标头发送到 请求客户端(浏览器)。

Application_PreSendContent:

在 ASP.NET 页面框架向请求者发送内容之前触发 客户端(浏览器)。

Application_AcquireRequestState:

当 ASP.NET 页面框架获得当前状态(Session state) 与当前请求相关。

Application_ReleaseRequestState:

当 ASP.NET 页面框架完成所有事件的执行时触发 处理程序。这将导致所有状态模块保存其当前 状态数据。

Application_ResolveRequestCache:

当 ASP.NET 页面框架完成授权时触发 要求。它允许缓存模块为来自 缓存,从而绕过处理程序执行。

Application_UpdateRequestCache:

当 ASP.NET 页面框架完成处理程序执行到 允许缓存模块存储用于处理的响应 后续请求。

Application_AuthenticateRequest:

当安全模块建立了当前用户的 身份为有效。至此,用户的凭证已经被 验证。

Application_AuthorizeRequest:

当安全模块验证用户可以访问时触发 资源。

Session_Start:

当新用户访问应用程序网站时触发。

Session_End:

当用户的会话超时、结束或离开时触发 应用程序网站。

谢谢

【问题讨论】:

    标签: asp.net-core asp.net-core-mvc


    【解决方案1】:

    关于 ASP.NET Core 中的会话

    经典 ASP.NET 包括几个与会话相关的事件:Session_Start 和 Session_End,您可以通过 global.asax 访问它们以执行代码。在 ASP.NET Core 1.0 中,您可以使用中间件查询会话集合,以确定是否已建立会话以复制 Session_Start 事件,但没有计划引入与 Session_End 等效的功能。

    由于 ASP.NET Core 1.0 背后的驱动力之一是“云就绪”,因此会话管理设计的重点一直是使其在分布式场景中工作。 Session_End 仅在会话使用 inproc 模式(本地服务器内存)和 .NET Core 团队have stated that they won't add features that only work locally 时才会触发。

    看看这里管理Application Session in ASP.NET Core

    HttpModules

    HttpModules 已被 ASP.NET Core 中的中间件取代,Application_BeginRequest 或 Application_EndRequest 等事件是 global.asax 的方法,它是一个 Http_Module。 所以,要替换那些你必须编写自己的中间件。

    我不会为您编写该代码,但您需要的一切(带有代码示例!)都在这里:Migrating HTTP handlers and modules to ASP.NET Core middleware

    验证

    关于Application_AuthenticateRequest,你也应该阅读关于Request features的文档。

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 1970-01-01
      • 2018-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多