Angular post,put,delete返回405

时间:2016-08-06 07:05:51

标签: angularjs asp.net-mvc asp.net-web-api angularjs-http

我是棱角分明的新人。

我无法使用angular调用POST,PUT和DELETE方法(GET工作正常) 我有一个.NET WebApi服务器,所有方法和所有资源URL都使用Advanced Rest Client工作和测试。

这是代码:

$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");
            }
        );
};

我尝试使用'内容类型':' application / x-www-form-urlencoded',我尝试了没有配置,我尝试了一个成功和错误我尝试了一个whith命令和数据属性。

我什么也没收到,在调试时,errResponse只包含请求数据。检查开发人员工具中的网络选项卡,我发现405返回了。 同样,所有URL都是有效的,并使用第三方REST客户端应用程序进行测试。

任何人都可以帮忙吗?

编辑: 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示例:

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

此致 IDO

1 个答案:

答案 0 :(得分:0)

将此代码段添加到web.config应解决问题:

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true">
       <remove name="WebDAVModule" />
   </modules>
</system.webServer>