方法在 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 功能,您可以导航至:

  1. 控制面板
  2. 卸载程序
  3. 打开或关闭 Windows 功能
  4. IIS
  5. 万维网服务
  6. 常见的 HTTP 特性
  7. WebDAV 发布