title: Error on run with simple ActionFilterAttribute
body: <p>Started writing a simple filter to pull some stuff from request on each action load, copied some code from other stackoverflows that looks like so:</p>
  
  <pre><code>public class TestKeyAttribute : ActionFilterAttribute
  {
      public override void OnActionExecuting(HttpActionContext context)
      {
          if (context.Request.Properties.ContainsKey("test"))
          {
          // do stuff
          }
      }
  }
  </code></pre>
  
  <p>Then added the attribute with the rest:</p>
  
  <pre><code>public static void RegisterGlobalFilters(GlobalFilterCollection filters)
  {
      GlobalConfiguration.Configuration.Filters.Add(new ElmahHandledErrorLoggerFilter());
      filters.Add(new HandleErrorAttribute());
      filters.Add(new TestKeyAttribute());
  }
  </code></pre>
  
  <p>On run, results in this error:</p>
  
  <pre><code>The given filter instance must implement one or more of the following filter
  interfaces: IAuthorizationFilter, IActionFilter, IResultFilter, IExceptionFilter.
  </code></pre>
  
  <p>Most of the links I've found relate to MVC 3, and this seems to work; I am however using MVC 4 and using Web API - is there some other way I need to register the attribute now?</p>
  
  <p>Just a note: I don't want the filter attached to Web API controllers (adding it to GlobalConfiguration.Configuration.Filters does work, though), but rather the normal web controllers.</p>
  
  <p><strong>Edit:</strong> I know I can get this working by inheriting from IActionFilter instead and using OnActionExecuting, I'm just curious why this approach doesn't work, since a bunch of tutorials seem to say it should.</p>