2015-06-02 5 views
1

Я реализовал код с использованием Type Script и Angular Js и использовал http.put и передал некоторые данные в свой веб-API, чем получить ответ от мой веб-API и заполнить его в сетке.Метод не допускается в IIS 7.5 с использованием скрипта типа + Угловой JS + статус веб-API 405

Но теперь проблема в том, что я получаю ошибку 405 Метод не разрешен. Я попытался внести некоторые изменения в IIS, так как разрешил все глаголы, но если я внес изменения и нажимаю ok, он не загрузит мое приложение и не даст 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 включена и мешает ваш запрос. Если вы его не используете, вам нужно убрать его с пути, чтобы вы могли использовать PUT-запросы для вашего веб-API.

Вы должны быть в состоянии сделать это, используя свой 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. World Wide Web Services
  6. Common HTTP feautre
  7. WebDAV Publishing
+0

Спасибо за ваше время Б.Т. я попробовал то же самое, если я применил изменения, как указано выше я мой веб-конфигурации моего приложения, чем мой приложение не запускалось. Это не загрузка. и если я перейду со вторым вариантом, это даст мне ошибку RPC Server, недоступно. –

+0

Что делать, если вы делаете оба вместе - если вы отключите WebDAV, запрос должен дойти до вашего приложения, после чего вам понадобится этот конфиг. – Fenton

+0

По-прежнему та же ошибка Запрос не может быть обработан. Для получения дополнительной информации Просмотрите изображение в моем вопросе. –