Global.asax中FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters)的用途是什么

hel*_*hab 37 c# asp.net-mvc

我已经阅读了类似的问题RegisterGlobalFilter的目的是什么

但是无法得到答案,这个问题在某种程度上也围绕着其他一些东西,并且anwser似乎并没有让我满满的.

我的问题是: - MVC 5中global.asax中这一行的目的是什么 FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

  1. 为什么需要它?
  2. 添加/注册过滤器的目的是什么?
  3. 过滤器必须做什么?

Pat*_*ick 49

FilterConfig是代码中的自定义类,通常在App_Start文件夹下,通常看起来像这样:

public class FilterConfig {
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) {
        filters.Add(new HandleErrorAttribute());
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以向此列表添加应在每个请求上执行的自定义过滤器.如果从FilterAttribute类或其继承者继承,则可以创建自己的过滤器,例如日志过滤器.

您还可以将这些过滤器应用于需要某些约束的控制器.例如,如果将[RequireHttps]过滤器属性(下面的示例)添加到控制器或控制器中的方法,则用户必须使用https请求才能执行方法中的代码.因此,过滤器不是在每种方法中处理它,而是处理它.

[RequireHttps]
public class MyController : ApiController {
    // only https requests will get through to this method.
    [HttpGet]
    public IHttpActionResult Get() {
       return Ok();
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以将其视为位于用户浏览器和控制器之间的小盒子,并过滤掉任何无效请求,或者在控制器完成后执行并且需要将结果后处理给用户.

如果您想阅读更多内容,msdn会在ASP.NET MVC中的Filtering中提供有关过滤器的更多详细信息.

  • 另外,出于"filters.Add(new HandleErrorAttribute())`的目的,请参阅:http://stackoverflow.com/q/17917434/770230 (2认同)