gpt4 book ai didi

c# - MVC 5 : How Does Application_PostAuthenticateRequest() get called in Global. asax?

转载 作者:太空狗 更新时间:2023-10-29 20:27:25 25 4
gpt4 key购买 nike

当为 [Authorize] 属性设置自定义主体以在 Microsoft 的 MVC 版本 4 和 5 中工作时,我们需要进入 Global.asax.cs 并设置一个名为 的方法Application_PostAuthenticateRequest()。我在我当前的项目中已经这样做了,而且效果很好。

但是,这真的让我很烦恼,这看起来多么“神奇”。 Application_PostAuthenticateRequest() 不是虚方法。我没有在类中重载或实现任何现有的方法签名。那么MVC框架是怎么知道调用它的呢?毕竟,C# 是一种强类型语言,除非您知道它存在,否则您无法调用类上的方法。

我能看到的唯一方法是通过反射。也许通过最终对象的方法并将与特定签名匹配的任何方法分配给委托(delegate)。但我真的不知道。而且我不明白为什么设计者会这样做而不是仅仅实现一个虚拟方法。

因此,总而言之,(A) 当 Application_PostAuthenticateRequest 不是 global.asax 类的已定义方法时,它是如何被调用的,以及 (B) 他们为什么不将其设为虚拟方法?

最佳答案

Rick Strahl 对此有一篇综合文章。简而言之,运行时在您的全局应用程序类上使用反射。

http://weblog.west-wind.com/posts/2009/Jun/18/How-do-ASPNET-Application-Events-Work

这种类型的事件连接通常称为“自动”,也出现在页面级别。例如,调用 Page_Load 只是因为默认的自动接线。

http://msdn.microsoft.com/en-us/library/system.web.configuration.pagessection.autoeventwireup(v=vs.110).aspx

关于c# - MVC 5 : How Does Application_PostAuthenticateRequest() get called in Global. asax?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25897032/

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