方法在 IIS 7.5 中不允许使用 Type Script + Angular Js + Web API Status 405
Method Put not Allowed in IIS 7.5 using Type Script + Angular Js + Web API Status 405
我已经使用 Type Script 和 Angular Js 实现了一个代码,并使用了 http.put 并将一些数据传递到我的网站 API 而不是从我的网站 API 并将其填充到网格中。
但现在的问题是我收到 405 Method Not Allowed 错误 我试图通过允许所有动词在 IIS 中进行一些更改,但是如果我进行更改并按确定,它将不会加载我的应用程序并提供 HTTP错误 500.19 - 内部服务器错误。
我也尝试更改我的网络配置,但问题仍然存在。
我已经向您展示了我的 TypeScript + Angular Js Controller:-
var customerapp = angular.module('CustomerSearch');
module CustomerSearch.controllers
{
export class CustomerCtrl {
static $inject = ['$scope', '$http', '$templateCache'];
debugger;
constructor(protected $scope: ICustomerScope,
protected $http: ng.IHttpService,
protected $templateCache: ng.ITemplateCacheService) {
$scope.search = this.search;
console.log(angular.element($scope).scope());
}
public search = (search: any) => {
debugger;
var Search = {
ActId: search.txtAct,
checkActiveOnly: search.checkActiveOnly,
checkParentsOnly: search.checkParentsOnly,
listCustomerType: search.listCustomerType
};
this.$scope.customer = [];
this.$scope.ticket = [];
this.$scope.services = [];
this.$http.put('/API/Search/Search', Search).
success((data, status, headers, config) => {
debugger;
this.$scope.cust_File = data[0].customers;
this.$scope.ticket_file = data[0].tickets;
this.$scope.service_file = data[0].services;
}).
error((data, status) => {
debugger;
console.log("Request Failed");
alert(status);
});
}
}
var customerapp = angular.module("CustomerSearch", []);
customerapp.controller('CustomerCtrl', CustomerSearch.controllers.CustomerCtrl);
}
这是我的网站APi:-
[AllowAnonymous]
[HttpPut]
public HttpResponseMessage PutDoSearch(searchItem value)
{
//...Definations
}
很可能 WebDAV 已启用并且正在干扰您的请求。如果您不使用它,则需要将其移开,以便您可以对您的 Web API.
使用 PUT 请求
您应该能够使用您的 web.config
文件执行此操作:
<system.webServer>
/* ... */
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
<security>
<requestFiltering>
<verbs allowUnlisted="false">
<add verb="GET" allowed="true" />
<add verb="POST" allowed="true" />
<add verb="DELETE" allowed="true" />
<add verb="PUT" allowed="true" />
</verbs>
</requestFiltering>
</security>
<system.webServer>
您也可以(可选)决定放弃 WebDav 功能,您可以导航至:
- 控制面板
- 卸载程序
- 打开或关闭 Windows 功能
- IIS
- 万维网服务
- 常见的 HTTP 特性
- WebDAV 发布
我已经使用 Type Script 和 Angular Js 实现了一个代码,并使用了 http.put 并将一些数据传递到我的网站 API 而不是从我的网站 API 并将其填充到网格中。
但现在的问题是我收到 405 Method Not Allowed 错误 我试图通过允许所有动词在 IIS 中进行一些更改,但是如果我进行更改并按确定,它将不会加载我的应用程序并提供 HTTP错误 500.19 - 内部服务器错误。
我也尝试更改我的网络配置,但问题仍然存在。 我已经向您展示了我的 TypeScript + Angular Js Controller:-
var customerapp = angular.module('CustomerSearch');
module CustomerSearch.controllers
{
export class CustomerCtrl {
static $inject = ['$scope', '$http', '$templateCache'];
debugger;
constructor(protected $scope: ICustomerScope,
protected $http: ng.IHttpService,
protected $templateCache: ng.ITemplateCacheService) {
$scope.search = this.search;
console.log(angular.element($scope).scope());
}
public search = (search: any) => {
debugger;
var Search = {
ActId: search.txtAct,
checkActiveOnly: search.checkActiveOnly,
checkParentsOnly: search.checkParentsOnly,
listCustomerType: search.listCustomerType
};
this.$scope.customer = [];
this.$scope.ticket = [];
this.$scope.services = [];
this.$http.put('/API/Search/Search', Search).
success((data, status, headers, config) => {
debugger;
this.$scope.cust_File = data[0].customers;
this.$scope.ticket_file = data[0].tickets;
this.$scope.service_file = data[0].services;
}).
error((data, status) => {
debugger;
console.log("Request Failed");
alert(status);
});
}
}
var customerapp = angular.module("CustomerSearch", []);
customerapp.controller('CustomerCtrl', CustomerSearch.controllers.CustomerCtrl);
}
这是我的网站APi:-
[AllowAnonymous]
[HttpPut]
public HttpResponseMessage PutDoSearch(searchItem value)
{
//...Definations
}
很可能 WebDAV 已启用并且正在干扰您的请求。如果您不使用它,则需要将其移开,以便您可以对您的 Web API.
使用 PUT 请求您应该能够使用您的 web.config
文件执行此操作:
<system.webServer>
/* ... */
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
<security>
<requestFiltering>
<verbs allowUnlisted="false">
<add verb="GET" allowed="true" />
<add verb="POST" allowed="true" />
<add verb="DELETE" allowed="true" />
<add verb="PUT" allowed="true" />
</verbs>
</requestFiltering>
</security>
<system.webServer>
您也可以(可选)决定放弃 WebDav 功能,您可以导航至:
- 控制面板
- 卸载程序
- 打开或关闭 Windows 功能
- IIS
- 万维网服务
- 常见的 HTTP 特性
- WebDAV 发布