2015-06-02 43 views
1

我已經實現了一個代碼使用類型腳本和Angular Js和使用http.put並傳遞一些數據到我的web API比得到響應我的Web API並將其填充到網格中。方法不允許在IIS 7.5中使用類型腳本+角Js + Web API狀態405

但現在的問題是我得到錯誤的405方法不允許我試圖在IIS中作出一些更改,因爲通過允許所有動詞,但如果我做了更改並按下確定它不會加載我的應用程序並給HTTP錯誤500.19 - 內部服務器錯誤。

我試圖改變我的網頁配置,但仍然是同樣的問題。 我已經向您展示我的打字稿+角的js控制: -

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); 
} 

這裏是我的Web API: -

[AllowAnonymous] 
    [HttpPut] 
    public HttpResponseMessage PutDoSearch(searchItem value) 
    { 
     //...Definations 
    } 

It's the error which i got after making chnages in my web.config and control pa

回答

3

很可能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 feautre
  7. WebDAV發佈
+0

感謝您的時間BT我試過相同的,如果我申請的變化上面我的應用程序比我在我的web配置我的應用程序沒有啓動,它沒有加載。如果我去第二個選項比它會給我一個錯誤的RPC服務器不可用。 –

+0

如果你們兩個都在一起 - 如果你禁用WebDAV,請求應該到達你的應用程序,此時你需要那個配置。 – Fenton

+0

仍然相同的錯誤無法處理請求。有關詳細信息請檢查我的問題中的圖像。 –