HTTP错误405.0 - 从angularjs应用程序访问web-api时不允许的方法

问题描述:

enter image description here我创建了一个anjular js应用程序,我创建了一个登录页面,并且使用web api验证了它。这是返回json并正常运行的控制器。HTTP错误405.0 - 从angularjs应用程序访问web-api时不允许的方法

[Route("api/Customer/{id}/{pass}")] 
public IEnumerable GetCustomer(string id, string pass) 
{ 
     var list = repository.Get(id, pass); 

     if (list != null) 
     { 
      return list; 
     } 
     else 
     { 
      return null; 
     } 
} 

这是控制器访问所述API中的角应用程式(demoApi.js)

(function() { 
    'use strict'; 
    var DemoApi = function ($http) { 
    var loginCheck = function (username, password) { 
     return $http.get("http://localhost:8115/api/Customer/" +username+"/"+password) 
      .then(function (response) { 
       return response.data; 
      }); 
     }; 
     return { 
      loginCheck: loginCheck 
     } 
    }; 

    var app = angular.module("angularApp"); 
    app.factory("DemoApi", DemoApi); 

}()); 

这是登录控制器(loginController.js)

(function() { 
var app = angular.module("angularApp"); 

var loginController = function ($scope, $http, bankApi, $location) { 
    var userDetails = { 
     username: $scope.uName, 
     password: $scope.uPassword 
    }; 

    $scope.login = function() { 
     DemoApi.loginCheck(userDetails.username, userDetails.password) 
      .then(onLogin, onError); 
    }; 

    var onError = function (reason) { 
     $scope.error = "Could not fetch the data."; 

    }; 
    var onLogin = function (data) { 
     $scope.details = data; 
     $location.path("/info"); 
    }; 
} 

app.controller('loginController', loginController); 
}()); 

这是索引我已链接所有脚本的页面

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" ng-app="angularApp"> 
    <head> 
    <title>Ebank</title> 
    <script src="Scripts/angular.js"></script> 
    <script src="Scripts/angular-route.js"></script> 
    <link href="Content/bootstrap.min.css" rel="stylesheet" /> 
    <script src="lib/app.js"></script> 
    <script src="lib/bankApi.js"></script> 
    <script src="lib/loginController.js"></script> 
    <script src="lib/infoController.js"></script> 
    </head> 
    <body style="background-color:#333"> 
    <div ng-view></div> 
    </body> 
</html> 

为我提供了一个解决方案,为什么我不是能够调用从demoApi.js 我得到的响应,如果我直接从HTML页面调用此API API但从demoApi.js

+0

请参阅http://stackoverflow.com/questions/19093603/simple-post-to-web-api ..您缺少控制器方法的[HttpPost]属性 – Amitd

+0

仍然无法正常工作.. @ Amitd – abhishek

+0

获取客户返回一个数组或说json对象,但我应该如何捕获响应数据的角度应用 – abhishek

大多数可能不会得到响应你遇到了CORS问题。您需要启用CORS。按照下面提到的步骤。

  1. 打开位于C:\ Program Files(x86)\ IIS Express \ AppServer的IISExpress配置文件applicationhost.config。
  2. 搜索“httpProtocol”标签。在它内部检查是否存在“customHeaders”标签。如果没有,然后添加它。
  3. 在“customHeaders”标签内添加以下两个标签。

<add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="Content-Type" />

另外,您可以使用在命令提示符下的命令,运行安全禁用模式chorme浏览器,并尝试从那里访问您的网站。

完整路径的chrome.exe - 禁用网络安全的user-data-dir的

注意它只是解决方法在您需要启用CORS生产部署然而,测试应用程序。

+0

仍然不工作..? – abhishek