HTTP错误405.0 - 从angularjs应用程序访问web-api时不允许的方法
我创建了一个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
大多数可能不会得到响应你遇到了CORS问题。您需要启用CORS。按照下面提到的步骤。
- 打开位于C:\ Program Files(x86)\ IIS Express \ AppServer的IISExpress配置文件applicationhost.config。
- 搜索“httpProtocol”标签。在它内部检查是否存在“customHeaders”标签。如果没有,然后添加它。
- 在“customHeaders”标签内添加以下两个标签。
<add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="Content-Type" />
另外,您可以使用在命令提示符下的命令,运行安全禁用模式chorme浏览器,并尝试从那里访问您的网站。
完整路径的chrome.exe - 禁用网络安全的user-data-dir的
注意它只是解决方法在您需要启用CORS生产部署然而,测试应用程序。
仍然不工作..? – abhishek
请参阅http://stackoverflow.com/questions/19093603/simple-post-to-web-api ..您缺少控制器方法的[HttpPost]属性 – Amitd
仍然无法正常工作.. @ Amitd – abhishek
获取客户返回一个数组或说json对象,但我应该如何捕获响应数据的角度应用 – abhishek