2015-01-13 84 views
0

我見過很多關於同一問題的問題,但我真的無法弄清楚我做錯了什麼。 當我向InscricaoSecretaria/Salvar方法發送請求時,收到405錯誤。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」的方法,該方法通過點擊按鈕來觸發。

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

編輯: 這裏有一些請求頭:

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

您可以發佈錯誤消息嗎? – Adam

+0

您要發佈哪種方法?看看http標題,這些東西搞亂了請求的URI。 – Fals

+0

@WhyCry我已經更新了描述 –

回答

2

你確定你的網絡服務器設置已經配置

"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" 
      } 
     }); 
    }]); 
})(); 

服務器與此錯誤消息響應處理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%\文件\ IISExpress \ config文件夾。檢查ExtensionlessUrl-Integrated-4.0處理程序的配置是否類似於此動詞=「GET,HEAD,POST,DEBUG,PUT,DELETE