2016-12-03 37 views
0

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

回答

0

大多數可能不會得到響應你遇到了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

相關問題