title: No MediaTypeFormatter is available to read an object of type 'FineUpload' from content with media type 'multipart/form-data'
body: <p>I am using the FineUploader control with ASP.NET MVC 4 with Knockout.js and require.js. I have gotten the control to load properly without any errors, but when I click upload there is error uploading a file. Is there an extra step I am missing?</p>
  
  <p>This is example I am trying to follow:
  <a href="https://github.com/Widen/fine-uploader-server/tree/master/ASP.NET%20MVC%20C%23" rel="nofollow">FineUploader Example</a></p>
  
  <p>Here is the error captured for fiddler:</p>
  
  <pre><code>{"Message":"An error has occurred.","ExceptionMessage":"No MediaTypeFormatter is available to read an object of type 'FineUpload' from content with media type 'multipart/form-data'.","ExceptionType":"System.InvalidOperationException","StackTrace":"   at System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger)\r\n   at System.Net.Http.HttpContentExtensions.ReadAsAsync(HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger)\r\n   at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger)\r\n   at System.Web.Http.ModelBinding.FormatterParameterBinding.ExecuteBindingAsync(ModelMetadataProvider metadataProvider, HttpActionContext actionContext, CancellationToken cancellationToken)\r\n   at System.Web.Http.Controllers.HttpActionBinding.&lt;&gt;c__DisplayClass1.&lt;ExecuteBindingAsync&gt;b__0(HttpParameterBinding parameterBinder)\r\n   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()\r\n   at System.Threading.Tasks.TaskHelpers.IterateImpl(IEnumerator`1 enumerator, CancellationToken cancellationToken)"}
  </code></pre>
  
  <p>Here is the knockout.bindings.js file that loads the control:</p>
  
  <h2>knockout.bindinds.js</h2>
  
  <pre><code>define('knockout.bindings', ['ko', 'moment', 'fu', 'toastr'], function (ko, moment, fu, toastr) {
      ko.utils.contains = function (string, startsWith) {
          string = string || "";
          if (startsWith.length &gt; string.length) return false;
  
          return string.toLowerCase().indexOf(startsWith.toLowerCase()) &gt;= 0;
      };
  
      ko.bindingHandlers.date = {
          update: function (element, valueAccessor) {
              var value = valueAccessor();
              var date = moment(value());
              var strDate = date.format('LL');
              $(element).text(strDate);
          }
      };
  
      ko.bindingHandlers.contractuploader = {
          init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
              $(element).fineUploader({
                  request: { endpoint: '/api/UploadContract/UploadFile' }
              })
          },
          update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
              // This will be called once when the binding is first applied to an element,
              // and again whenever the associated observable changes value.
              // Update the DOM element based on the supplied values here.
          }
      };
  
  });
  </code></pre>
  
  <p>Here is the controller:</p>
  
  <h2>UploadContractController.cs</h2>
  
  <pre><code>public class UploadContractController : ApiController
      {
          [AcceptVerbs("GET", "POST")]
          public FineUploaderResult UploadFile(FineUpload upload)
          {
              try
              {
                  return new FineUploaderResult(true, new { extraInformation = 12345 });
              }
              catch (Exception ex)
              {
                  throw;
              }
          }
      }
  </code></pre>
  
  <p>Please let me know if any other information is needed!</p>