【发布时间】:2017-10-19 01:44:57
【问题描述】:
我正在使用 AngularJS 调用我的 webAPI 并出现以下错误...
Failed to load resource: the server responded with a status of 405 (Method Not Allowed) http://localhost:52240/api/PcpEnvironment/
XMLHttpRequest cannot load http://localhost:52240/api/PcpEnvironment/. Invalid HTTP status code 405
这是我对 webapi 的调用...
angular.module('PcPortal')
.controller('UpdateEnvironmentController', UpdateEnvironmentController);
UpdateEnvironmentController.$inject = ['$scope', '$http', '$rootScope'];
function UpdateEnvironmentController($scope, $rootScope, $http) {
$scope.selectedEnv = $rootScope.selectedEnv;
$scope.updateEnv = function () {
alert('Updating env');
var envData = angular.toJson($rootScope.selectedEnv);
var config = {
method: 'POST',
url: 'http://localhost:52240/api/PcpEnvironment/Post/',
headers: {
"Content-Type": "application/json"
},
data: { env: envData }
};
$http(config)
.then(function successCallback(response) {
alert(response);
},
function errorCallback(response) {
alert('Failed: ' + response);
});
}
};
WebApI 方法...
[HttpPost]
public bool Post(PcpEnvironment env)
{
return _service.UpdateEnvironment(env);
}
在我的 webapiconfig 文件中...我在下面添加了...
System.Web.Http.GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
config.Formatters.Insert(0, new System.Net.Http.Formatting.JsonMediaTypeFormatter());
f 我删除了一个$http ...我的绑定停止工作...对于var webadmin = angular.module('PcPortal',[]);,我有单独的引导文件来执行此操作...这里我只是获取同一个应用程序的参考。
为了让我的绑定正常工作...我需要更改输入顺序,如下所示...
UpdateEnvironmentController.$inject = ['$scope', '$http', '$rootScope'];
function UpdateEnvironmentController($scope, $rootScope, $http)
根据建议的控制器的新定义...我遇到了错误...
TypeError: object is not a function
这个错误是因为使用 $http 来调用服务器。 可以帮助解决这里的问题。
【问题讨论】:
-
如果一切都是服务器端的文件,表单状态码 405(不允许方法),可能的原因可能是您的数据不正确。在配置中,您可以尝试直接将数据作为
envData传递。而不是添加env
标签: angularjs json post asp.net-web-api