title: Posting form-data AND a file to ASP.NET Web API
body: <p>I have this ASP.NET Web API method, and I want to post an object and in the same time, a file!</p>
  
  <pre><code>    public async Task&lt;IHttpActionResult&gt; Post(Facility facility)
      {
          if (!ModelState.IsValid)
              return BadRequest();
  
          // Check if the request contains multipart/form-data.
          if (!Request.Content.IsMimeMultipartContent())
          {
              throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
          }
  
          string root = HttpContext.Current.Server.MapPath("~/App_Data");
          var provider = new MultipartFormDataStreamProvider(root);
  
              // Read the form data.
              await Request.Content.ReadAsMultipartAsync(provider);
  
              // This illustrates how to get the file names.
              foreach (MultipartFileData file in provider.FileData)
              {
                  Trace.WriteLine(file.Headers.ContentDisposition.FileName);
                  Trace.WriteLine("Server file path: " + file.LocalFileName);
              }
              // Logic
              // Login
  
          return Ok(facilityManager.Insert(facility));
      }
  </code></pre>
  
  <p>And I want to call it, so I send this http request with fiddler:</p>
  
  <p>Header: </p>
  
  <pre><code>Content-Type: multipart/form-data; boundary=-------------------------acebdf13572468
  User-Agent: Fiddler
  Host: localhost:44301
  Content-Length: 3279
  </code></pre>
  
  <p>Body:</p>
  
  <pre><code>---------------------------acebdf13572468
  Content-Disposition: form-data; name="fieldNameHere"; filename="credits.txt"
  Content-Type: text/plain
  
  &lt;@INCLUDE *C:\Program Files (x86)\Fiddler2\credits.txt*@&gt;
  ---------------------------acebdf13572468
  Content-Disposition: form-data; name="facility"
  Content-Type: application/json
  {
      "FacilityTypeId":"1"
  }
  ---------------------------acebdf13572468--
  </code></pre>
  
  <p>I get an 415 error code with response text:</p>
  
  <blockquote>
    <p>{"message":"The request entity's media type 'multipart/form-data' is not supported for this resource.","exceptionMessage":"No MediaTypeFormatter is available to read an object of type 'Facility' from content with media type 'multipart/form-data'.","exceptionType":"System.Net.Http.UnsupportedMediaTypeException","stackTrace":" at System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable<code>1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n at System.Net.Http.HttpContentExtensions.ReadAsAsync(HttpContent content, Type type, IEnumerable</code>1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)"}</p>
  </blockquote>
  
  <p>I searched a lot before asking but couldn't find any solution. Thnaks for helping.</p>
  
  <p><strong>EDIT:</strong></p>
  
  <p>A note: If I remove the "facility" parameter, and let the method only for uploading the file, it works perfect, but I want to post JSON and a file together.</p>