2016-08-06 2 views
2

Я новичок в угловой.Угловой пост, положить, удалить возвращает 405

Я не могу использовать методы POST, PUT и DELETE с использованием угловых (GETs отлично работает) У меня есть сервер .NET WebApi, который работает и протестирован всеми методами и всеми URL-адресами ресурсов с помощью Advanced Rest Client.

Это код:

$scope.updateUser = function() { 

    var url = 'http://localhost/api/users/' + $scope.selectedId; 
    $http.put(url, $scope.user,{'content-type' : 'application/json'}) 
     .then(
      function(response) { 
       alert("1"); 
      }, 
      function(errResponse) { 
       alert("2"); 
      } 
     ); 
}; 

Я попытался с 'Content-Type': 'применение/х-WWW-форм-urlencoded', я пытался, не конфиг вообще, я попробовал один с успех и ошибка, и я попробовал один атрибут команды и данных.

Я ничего не получаю и при отладке errResponse содержит только данные запроса. Проверьте вкладку сети в инструментах разработчика, и я обнаружил, что возвращается 405. Опять же, все URL-адреса действительны и протестированы с использованием стороннего клиентского приложения REST.

Может ли кто-нибудь помочь?

EDIT: web.config:

<system.webServer> 
    <handlers> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
     <remove name="OPTIONSVerbHandler" /> 
     <remove name="TRACEVerbHandler" /> 
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    <modules runAllManagedModulesForAllRequests="true"> 
    <remove name="WebDAVModule" /> 
    </modules> 
    <httpProtocol> 
    <customHeaders> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     <add name="Access-Control-Allow-Headers" value="Content-Type" /> 
     <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> 
    </customHeaders> 
    </httpProtocol> 
    </system.webServer> 

PUT пример:

[HttpPut] 
    [Route("api/users/{id}")] 
    public IHttpActionResult updateUser(int id, User user) 

С уважением, идо

+1

Поделитесь методами API, web.config, частями вашего global.asax. Вы дали очень мало кода, чтобы уйти. –

+0

Является ли ваш атрибут '[HttpPut]' 'System.Web.Http'? (Не из 'System.Web.Mvc') –

+0

Добавлен файл web.config и пример –

ответ

0

добавляя этот фрагмент в web.config должен решить проблему:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <remove name="WebDAVModule" /> 
    </modules> 
</system.webServer> 
+0

Нет .. это не так. Я могу добраться до этих URL-адресов ... просто не от углового. –

Смежные вопросы