我已阅读类似问题What is the purpose of RegisterGlobalFilter
但是无法得到答案,这个问题在某种程度上也围绕着其他一些东西而且anwser似乎并没有让我满满。
我的问题是: -
在MVC 5 FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
答案 0 :(得分:48)
FilterConfig
是代码中的自定义类,通常位于App_Start文件夹下,通常看起来像这样:
public class FilterConfig {
public static void RegisterGlobalFilters(GlobalFilterCollection filters) {
filters.Add(new HandleErrorAttribute());
}
}
您可以在此列表中添加应在每个请求上执行的自定义过滤器。如果您从FilterAttribute
类或其中一个inheritors继承,则可以创建自己的过滤器,例如日志过滤器。
您还可以将这些过滤器应用于需要特定约束的控制器。例如,如果将[RequireHttps]
过滤器属性(下面的示例)添加到控制器或控制器中的方法,则用户必须使用https请求才能执行方法中的代码。因此,过滤器不是在每种方法中处理它,而是处理它。
[RequireHttps]
public class MyController : ApiController {
// only https requests will get through to this method.
[HttpGet]
public IHttpActionResult Get() {
return Ok();
}
}
您可以将其视为位于用户浏览器和控制器之间的小盒子,过滤输出任何无效请求,或者在控制器完成后执行并且您需要对其进行后处理结果给用户。
如果您想了解更多内容,msdn会在Filtering in ASP.NET MVC处提供有关过滤器的更多详细信息。