2015-08-17 30 views
1

嗨我想將一些數據發佈到我的WebAPI,但出現錯誤爲「無法加載資源:服務器響應405狀態(不允許的方法)」

這裏是我的角度電話:

var req= { 
        url: appSettings.basePath + '/api/Location/PostSearch', 
        headers: { 'Content-Type': 'application/json' }, 
        //datatype: 'Json', 
        data: SearchInfo, 
        method: 'POST' 
        } 
       return $http(req); 

我的API:

public int PostSearch(Search Obj) 

{ 
      Obj.Location = ReplaceDefaultValuesWithBlank(Obj.Location); 
      Obj.Sublocation = ReplaceDefaultValuesWithBlank(Obj.Sublocation); 
      Obj.PublicationCategory = ReplaceDefaultValuesWithBlank(Obj.PublicationCategory); 
      Obj.PublicationName = ReplaceDefaultValuesWithBlank(Obj.PublicationName); 
      int IsAdded = Db.USP_SaveSearch(Obj.SSO ?? "", Obj.SearchName ?? "", Obj.Location ?? "", Obj.Sublocation ?? "", Obj.PublicationCategory ?? "", Obj.PublicationName ?? "", Obj.FileNameFilterText ?? "", Obj.Content ?? "", Obj.DateRange ?? ""); 
      return IsAdded; 
     } 

不知道是什麼問題,請致電工作正常,在IE瀏覽器,但犯規適用於Chrome/FireFox,

我沒有看到有任何CORS問題,因爲「GET」的作品精絕,這是相關的定製路線,我在的WebAPI紛紛推出

WebAPIConfig.cs:

public static void Register(HttpConfiguration config) 
     { 
      config.Routes.MapHttpRoute(
       name: "DefaultApiWithAction", 
       routeTemplate: "Api/{controller}/{action}" 
       ); 

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

請幫助我出去,我花了很多時間排除故障。

+0

嘗試得到它,使用GET方法,你必須與其他一些概念混淆,否則一切看起來不錯,並應得到良好的獲得,你會得到結果。 – MarmiK

+0

你的url應該是'url: appSettings.basePath +'/ api/Location'' –

+0

嗨,獲取方法是在我的API中單獨定義的工作正常,但我需要這與POST一起工作,因爲我試圖發佈一些數據將被存儲在我的數據庫中。不知道爲什麼它不適用於POST。 –

回答

0

在OPTIONS上獲得405:扣除 - > OPTIONS請求('預檢')只發送帶POST的CORS請求。這很可能是一個CORS問題。 - 馬文斯密特昨天

+0

謝謝馬文Smit我使用enablecors方法和指定的第三個參數爲「GET,POST,PUT,DELETE,OPTIONS」 –