如何在 Global.asax.cs 文件中全局声明 Filter 属性

Ank*_*ita 5 c# asp.net-mvc actionfilterattribute

我在我的 MVC 项目中实现了一个动作过滤器。现在我想全局添加它,这样我就不需要在操作方法上方编写过滤器属性。我正在使用 BundleMinifyInlineJsCss nuget 包。

我在 Global.asax.cs 文件中尝试了以下代码:

GlobalFilters.Filters.Add(new ReplaceTagsAttribute());
Run Code Online (Sandbox Code Playgroud)

这是我的过滤器代码:

 public class ReplaceTagsAttribute : ActionFilterAttribute
 {
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.HttpContext.Response.Filter = new BundleAndMinifyResponseFilter(filterContext.HttpContext.Response.Filter);                         
    }
 }
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:不允许过滤。我如何在全球范围内声明它?

谢谢。

Aji*_*ngh 5

我认为添加一个空检查对你有用。

    public class ReplaceTagsAttribute : ActionFilterAttribute
 {
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
       var response = filterContext.HttpContext.Response;
 if (response.Filter == null) return; // <-----
response.Filter = new BundleAndMinifyResponseFilter(response.Filter);

    }
 }
Run Code Online (Sandbox Code Playgroud)