2

I am new to angular.

I cant invoke POST, PUT and DELETE methods using angular (GETs working fine) I have a .NET WebApi server which all methods and all resources URLs works and tested using Advanced Rest Client.

This is the code:

$scope.updateUser = function() {

    var url = 'http://localhost/api/users/' + $scope.selectedId;
    $http.put(url, $scope.user,{'content-type' : 'application/json'})
        .then(
            function(response) {
                alert("1");
            },
            function(errResponse) {
                alert("2");
            }
        );
};

I tried with 'content-type':'application/x-www-form-urlencoded', I tried with no config at all, I tried the one with success and error and I tried the one whith command and data attributes.

I get nothing back and while debugging, errResponse contains only the request data. Checked the network tab in the developer tools, and I found that 405 returned. Again, all URLs are valid and tested using a third party REST client app.

Can any one help?

EDIT: web.config:

<system.webServer>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  <modules runAllManagedModulesForAllRequests="true">
    <remove name="WebDAVModule" />
  </modules>
  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Headers" value="Content-Type" />
      <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
    </customHeaders>
  </httpProtocol>
  </system.webServer>

PUT example:

    [HttpPut]
    [Route("api/users/{id}")]
    public IHttpActionResult updateUser(int id, User user)

Regards, Ido

Ido Barash
  • 4,856
  • 11
  • 41
  • 78

1 Answers1

0

adding this snippet to web.config should resolve problem :

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true">
       <remove name="WebDAVModule" />
   </modules>
</system.webServer>
Saeid Doroudi
  • 935
  • 1
  • 9
  • 25