title: Custom MediaTypeFormatter not being used for deserialization
body: <p>I have a simple <code>MediaTypeFormatter</code> like so:</p>
  
  <pre><code>public class SomeFormatter : MediaTypeFormatter
  {
      public override bool CanReadType(Type type)
      {
          return type == typeof(SomeRequest);
      }
  
      public override bool CanWriteType(Type type)
      {
          return type == typeof(SomeResponse);
      }
  
      public override Task&lt;object&gt; ReadFromStreamAsync(Type type, Stream readStream, HttpContent content, IFormatterLogger formatterLogger)
      {
          return Task.Factory.StartNew(() =&gt;
          {
              using (readStream)
              {
                  return (object)new SomeRequest();
              }
          });
      }
  
      public override Task&lt;object&gt; ReadFromStreamAsync(Type type, Stream readStream, HttpContent content, IFormatterLogger formatterLogger,
          CancellationToken cancellationToken)
      {
          // ReSharper disable once MethodSupportsCancellation
          return ReadFromStreamAsync(type, readStream, content, formatterLogger);
      }
  
      public override Task WriteToStreamAsync(Type type, object value, Stream writeStream, HttpContent content, TransportContext transportContext)
      {
          return Task.Factory.StartNew(() =&gt;
          {
              for (var i = 0; i &lt; 255; i++)
              {
                  writeStream.WriteByte((byte)i);
              }
          });
      }
  }
  </code></pre>
  
  <p>It is wired in <code>WebApiConfig</code> like so:</p>
  
  <pre><code>public static class WebApiConfig
  {
      public static void Register(HttpConfiguration config)
      {
          // Web API configuration and services
          config.Formatters.Clear();
          config.Formatters.Add(new SomeFormatter());
  
          // Web API routes
          config.MapHttpAttributeRoutes();
  
          config.Routes.MapHttpRoute(
              name: "DefaultApi",
              routeTemplate: "api/{controller}/{id}",
              defaults: new { id = RouteParameter.Optional }
          );
      }
  }
  </code></pre>
  
  <p>and a Web API controller :</p>
  
  <pre><code>public class SomeController : ApiController
  {
      public SomeResponse Get(SomeRequest request)
      {
          return new SomeResponse();
      }
  }
  </code></pre>
  
  <p>yet when I test the controller with a GET (from a browser) I get a <code>null</code> request. The <code>CanReadType</code> fires and returns true but then none of the ReadFromStreamAsync overloads fire.</p>
  
  <p>What could be wrong?</p>