2015-01-13 2 views
0

Я видел много вопросов о той же проблеме, но я действительно не могу понять, что я делаю неправильно. Я получаю ошибку 405 при отправке запроса на метод InscricaoSecretaria/Salvar.asp.net web api 405 метод не допускается, сообщение, настраиваемое действие

Вот мой конфигурационный файл:

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.MessageHandlers.Add(new AuthorizationHandler()); 

     // Default Route Configuration 

     config.Routes.MapHttpRoute(
      name: "DefaultApi2", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     // Unity Container Configuration 

     IUnityContainer container = new UnityContainer(); 
     container.RegisterType<BusinessContext>(new InjectionConstructor(ConfigurationManager.ConnectionStrings["HabileConnection"].ConnectionString)); 
     config.DependencyResolver = new UnityResolver(container); 
    } 
} 

Вот мой контроллер

public class InscricaoSecretariaController : ApiController 
{ 
    [HttpPost] 
    public HttpResponseMessage Salvar(InscricaoSecretaria inscricao) 
    { 
     return null; 
    } 
} 

и Ajax вызова (angularjs). Я использую метод с именем «salvar» углового модуля, который запускается нажатием кнопки.

"use strict"; 

(function(){ 
    var restClient = angular.module("restClient", ["ngResource"]); 
    var serviceURL = "/habileapp/api/"; 

    restClient.factory("InscricaoResource", ["$resource", function ($resource) { 
     return $resource(serviceURL + "InscricaoSecretaria", null, { 
      "recuperar": { 
       "method": "get" 
      }, 
      "salvar": { 
       "method": "post", 
       "url": serviceURL + "inscricaoSecretaria/Salvar" 
      }, 
      "finalizar": { 
       "method": "post", 
       "url": serviceURL + "inscricaoSecretaria/Finalizar" 
      } 
     }); 
    }]); 
})(); 

Сервер отвечает с этим сообщением об ошибке:

The requested resource does not support http method 'POST'. 

EDIT: Вот некоторые заголовки запроса:

Request URL:http://localhost/habileapp/api/inscricaoSecretaria/Salvar 
Request Method:POST 
Status Code:405 Method Not Allowed 
+0

Можете ли вы разместить сообщение об ошибке? – Adam

+0

Какой метод вы отправляете? посмотрите на заголовок http, theres что-то испортило запрошенный URI. – Fals

+0

@WhyCry Я обновил описание –

ответ

2

Вы уверены, что ваши настройки веб-сервер был настроен для обработки глагола POST? По умолчанию он должен быть настроен как для запросов GET, так и для POST, но в какой-то момент он может быть изменен. Ниже приведены некоторые шаги, чтобы проверить:

IIS: http://www.asp.net/web-api/overview/testing-and-debugging/troubleshooting-http-405-errors-after-publishing-web-api-applications

IIS Экспресс: Посмотрите в файле applicationHost.config в% USERPROFILE% \ Documents \ IISExpress \ папку конфигурации. Убедитесь, что обработчик ExtensionlessUrl-Integrated-4.0 настроен так, как этот глагол = «GET, HEAD, POST, DEBUG, PUT, DELETE

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