加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – MVC 5:如何在Global.asax中调用Application_PostAuthenti

发布时间:2020-12-15 07:41:10 所属栏目:百科 来源:网络整理
导读:当为[Authorize]属性设置自定义主体以在Microsoft的MVC版本4和5中工作时,我们需要进入Global.asax.cs并设置一个名为Application_PostAuthenticateRequest()的方法.我已经在我当前的项目中完成了它,它运行得很好. 但是,它真的让我觉得这看起来像“神奇”多少.
当为[Authorize]属性设置自定义主体以在Microsoft的MVC版本4和5中工作时,我们需要进入Global.asax.cs并设置一个名为Application_PostAuthenticateRequest()的方法.我已经在我当前的项目中完成了它,它运行得很好.

但是,它真的让我觉得这看起来像“神奇”多少. Application_PostAuthenticateRequest()不是虚方法.我没有在类中重载或实现任何现有的方法签名.那么MVC框架如何知道它呢?毕竟,C#是一种强类型语言,除非你知道它在那里,否则你不能在类上调用方法.

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

总而言之,(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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读