你什么时候这样做?它在模块事件中吗?它也应该在集成池中完全可行。最重要的是,在集成模式下运行时 ASP.NET 如何与 IIS 挂钩,这使得它“更加一流”。这确实意味着某些事件之前会触发,例如 Application_Start 现在将在实际请求的上下文之外触发。其他示例期望在 BeginRequest 中具有 Windows Authenticated Identity,因为现在 BeginRequest 甚至在 IIS 身份验证之前发生,而过去并非如此。
如果您的应用程序依赖于旧的不良行为,您仍然可以将 AppPool 更改为在经典模式下运行,它会正常工作。
您应该能够在任何特定于请求的通知中获取请求,例如 BeginRequest、EndRequest、PostAuthorizeRequest 等。此外,我建议不要使用 HttpContext.Current,因为这会导致在哈希表中进行额外查找,通常您可以以其他方式直接获取上下文,特别是在模块的上下文中,例如,如果您处理 BeginRequest,您应该能够:
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
您将保存查找。
从您的描述看来,您应该实现一个处理 BeginRequest 和 EndRequest 的模块,您应该没问题。