编程语言
首页 > 编程语言> > C# MVC监控所有url

C# MVC监控所有url

作者:互联网

近日,在对一个MVC项目进行权限监控的时候发现一个问题,自己本身定义的控制器是可以过滤controller/views页面的,当输入相应的controller/views 的url,过滤器可以对其进行监控,并判断其是否登录和是否有权限。

但是如果是有一些自定义的文件,比如一些静态html页,此时当我们输入对应的url时候,是不经过过滤器的,他会直接进入到相应的页面,这样对于一些文件的隐私性就有一些隐患。

解决方法就是在webconfig里面加入如下模块

 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>

这样,我们在全局配置文件Global.asax里面,就可以监控到所有的url。其里面有很多方法,其中有一个方法是 Application_BeginRequest:在接收到一个应用程序请求时触发对于一个请求来说,它是第一个被触发的事件,请求一般是用户输入的一个页面请求(URL)。

Global.asax 文件继承自HttpApplication 类,它维护一个HttpApplication 对象池,并在需要时将对象池中的对象分配给应用程序。因此,HttpApplication类中所有的方法、类和对象对于应用程序都是可用的
此时其继承HttpApplication的类就是MvcApplication
并且global里面还定义了很多事件,比如

  1. Application_Init:在应用程序被实例化或第一次被调用时,该事件被触发对于所有的HttpApplication对象实例,它都会被调用
  2. Application_Error:当应用程序中遇到一个未处理的异常时,该事件被触发
  3. Application_Start:在HttpApplication类的第一个实例被创建时,该事件被触发它允许你创建可以由所有HttpApplication实例访问的对象
  4. Application_End:在HttpApplication类的最后一个实例被销毁时,该事件被触发在一个应用程序的生命周期内它只被触发一次 ·
  5. Application_BeginRequest:在接收到一个应用程序请求时触发对于一个请求来说,它是第一个被触发的事件,请求一般是用户输入的一个页面请求(URL)
  6. Application_EndRequest:针对应用程序请求的最后一个事件
    等等。

这样,我们就可以在相应的事件里面写自己的方法。

标签:触发,请求,Application,C#,应用程序,url,MVC,HttpApplication,事件
来源: https://blog.csdn.net/qq_42165840/article/details/115443192