2016-09-23 3 views
0

を取得するには、デフォルト値をPOSTリクエストを認識していない:ルーティングは、私はまだ問題を下回るに関するヘルプを探しています

私は私のためのMVC C#.NET(4.0)のWeb APIプロジェクトにRESTfulなAPIに取り組んできました企業は数日(オンとオフ)になっていますが、なんらかの理由でAPIをHTTP POSTにルーティングすることができないようですが、Get(デフォルト設定)を続けています。私はいくつかが正常に動作し GETリクエスト持っ

、私はそれらをしても、ストレステストしてみた、これはルーティングエラーは、私が見つけることができないようどこかがあると信じて私をリード。 ..

(私は多くの他のパラメータも試しましたが、デバッガはPostメソッドの起動をキャッチしません)にナビゲートすると、このエラーメッセージが表示されます。

{ "メッセージ": "要求されたリソースは、HTTPメソッドをサポートしていません 'GET'"} はlocalhost:?61090/API/Ole_foundations /ポスト/ S =カレ

です私のポスト:

[HttpPost] 
public void Post(string s) 
{ 
    WSC.DNN.WorksiteCloudOLEDC.WorkSiteCloudOLEDC.WorkSiteCloudOLEDC wdc = new WSC.DNN.WorksiteCloudOLEDC.WorkSiteCloudOLEDC.WorkSiteCloudOLEDC(); 
    int ret1 = 0; 
    int ret2 = 0; 
    Boolean ret3 = wdc.INSERTOLE_Foundation(14774, 14774, "JSONTEST", "JSONTEST", "JSONTEST", 0.00, 0.00, 0.00, 0.000, 0.00, 0.000, "JSONTEST", 0.000, 0.000, 12345, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, "JSONTEST", 1234, 0.000, 0.000, 0.000, 0.000, true, true, Convert.ToDateTime("01/01/1900"), "JSONTEST", "JSONTEST", true, "JSONCOMMENTTEST", 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, true, true, true, true, true, true, true, 12345, true, true, 12345, true, true, "JSONTEST", "JSONTEST", "JSONTEST", null, Convert.ToDateTime("01/01/1900"), "JSONTEST", null, Convert.ToDateTime("01/01/1900"), Convert.ToDateTime("01/01/1900"), Convert.ToDateTime("01/01/1900"), null, null, null, true, true, true, "JSONTEST", 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, null, "FINALJSONTEST", true, "NRCJSONTEST", 12345, true, true, true, true, true, true, "UPDATEDBYTEST", 3322, WSC.DNN.GeneralRoutines.clsEnums.MappingTypes.OLE_Foundation, conStr, "JoakimJSONTEST", ref ret1, ref ret2); 


} 

メソッド本体のすべては問題なく、意図どおりに動作します。

これらは、WebApiConfig.csで定義されているルートです:

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

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

     config.Routes.MapHttpRoute(
      name: "insertRoute", 
      routeTemplate: "api/{controller}/{action}/{param}", 
      defaults: new { controller = "Ole_foundations", action = "Post", param = RouteParameter.Optional } 
     ); 

And these are the routes defined in **Global.asax.cs:** 


    public class WebApiApplication : System.Web.HttpApplication 
    { 
     protected void Application_Start() 
     { 
      AreaRegistration.RegisterAllAreas(); 

      WebApiConfig.Register(GlobalConfiguration.Configuration); 
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
      RouteConfig.RegisterRoutes(RouteTable.Routes); 
      BundleConfig.RegisterBundles(BundleTable.Bundles); 
      RouteTable.Routes.MapHttpRoute(null, "api/{controller}/{action}/{parameters}", 
      new { parameters = UrlParameter.Optional, Action = "Get" }); 
      RouteTable.Routes.MapHttpRoute(null, "api/{controller}/{action}/{param}", 
      new { Action = "Post", param = UrlParameter.Optional }); 
     } 

     } 

答えて

0

あなたは正しいパスにアクセスしているが、あなたは、なぜある代わりにPOSTのGETリクエストを使用していることを意味し得るメッセージそれは動作しません。

これはしかし動作するはずです:あなたがGETを作っているし、あなたの方法を[HttpPost] alstoとしてマークされ

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d 's=kalle' "http://localhost:61090/api/Ole_foundations/Post/" 
+0

ので、リクエストをPOSTとして認識させるにはどうすればよいですか? – geostocker

+0

リクエストの送信方法を表示できますか? – IamNguele

+0

どういう意味ですか?私のURL? – geostocker

1

あなたが渡す引数は、この場合には、パラメータと同じ名前でなければなりませんs=someValue

+0

これはGETとして認識されているので、私は助けを求めています。 パラメータを変更しても問題ありません、まだ同じエラーメッセージが表示されます... – geostocker

+0

HTTP POSTリクエストはURLだけでは送信できません。 (フォームフィールドがなく、サーバーがContent-typeヘッダーを気にしないという特別な場合を除いて)。 POSTを行うには、

、javascriptまたはjQueryを使用するか、Googleにそれらのオプションを指定するか、C#http://stackoverflow.com/questions/4015324/http-request-with-役職 – Jersono

関連する問題