title: web api put is recognizing query strings but not body
body: <p>when i pass in users as a query string (using params in $http) and set the web api method to look for them in the uri everything is peachy.  but when i pass them in as below, users shows up as null.  what am i missing here?</p>
  
  <p>angular function</p>
  
  <pre><code>scope.saveChanges = function () {
          // create array of user id's
          var users = [];
          angular.forEach(scope.usersInRole, function (v, k) {
              users.push(v.Key);
          });
  
          var data = { user: users };
  
          var token = angular.element("input[name='__RequestVerificationToken']").val();
  
          // put changes on server
          http({
              url: config.root + 'api/Roles/' + scope.selectedRole + '/Users',
              method: 'PUT',
              data: data,
              contentType: "application/json; charset=utf-8",
              headers: { "X-XSRF-Token": token },
              xsrfCookieName: '__RequestVerificationToken'
          }).success(function (result) {
              // notify user changes were saved
              angular.element('#myModal').reveal({ closeOnBackgroundClick: false });
          });
      };
  </code></pre>
  
  <p>web api action</p>
  
  <pre><code> public HttpResponseMessage Put(HttpRequestMessage request, [FromUri]string role, [FromBody]string[] user)
              {
  
                  return request.CreateResponse(HttpStatusCode.NoContent);
              }
  </code></pre>