2016-09-09 9 views
1

私は現在、単純な角度jsアプリケーションを開発しようとしています。 クライアントからWeb APIにデータを投稿しようとしています。 しかし、角度アプリからの投稿リクエストを送信すると404エラーが表示されます。

以下は、jsonDataが有効なJSONデータである

$http.post('/api/LoadApi/', jsonData).then(function (result) { 
       console.log(result.data); 
      }) 
      .catch(function (error) { 
      }); 

私のポスト要求です。

マイウェブAPIコードはこれです、

public class LoadApiController : ApiController 
{ 
    [HttpPost] 
    public HttpResponseMessage LoadData(object dataToLoad) 
    { 
     var response = Request.CreateResponse(HttpStatusCode.Created); 

     return response; 
    } 
} 

マイウェブAPIルートの設定はこれである私は、コードを実行すると、

config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{dataToLoad}" 
      ); 

はしかし、それは

エラーをスローします'/'アプリケーションのサーバーエラー。 リソースが見つかりません。 説明:HTTP 404。探しているリソース(またはその依存関係の1つ)が削除されているか、名前が変更されているか、一時的に使用できない可能性があります。次のURLを確認し、正しく入力されていることを確認してください。 要求されたURL:/ API/LoadApi/

誰もが上記のコードに問題が何であるかを指し示すことができますか?

URLには問題があると言われています。生成されたURLは正しいと思われるhttp://localhost:14154/api/LoadApi/です。

+0

あなたが照合したいコントローラのアクションを定義していないため、ルートテンプレートが機能しませんでした。 – Claies

+0

また、URL文字列にデータを送信するために 'POST'を使用しません。 – Claies

答えて

1

問題は経路定義と、コントローラメソッドにどのようにデータを送信しようとしているかにあります。属性ベースのルーティングを使用することをお勧めします。これにGlobal.asax.cs

[RoutePrefix("api/LoadApi")] 
public class LoadApiController : ApiController 
{ 
    [HttpPost] 
    [Route("loadData")] 
    public HttpResponseMessage LoadData(object dataToLoad) 
    { 
     var response = Request.CreateResponse(HttpStatusCode.Created); 
     return response; 
    } 
} 

変更Application_Start()方法:

public static void Register(HttpConfiguration config) 
{ 
    config.MapHttpAttributeRoutes(); 
} 

protected void Application_Start() 
{ 
    GlobalConfiguration.Configure(WebApiConfig.Register); 
} 

App_StartWebApiConfig.csは、このようなRegister()方法を持っていることを確認してWeb APIコントローラでこれを行います最後に$http.postの電話番号を

に変更してください
$http.post('/api/LoadApi/loadData', jsonData).then([...]); 
+0

ありがとう!!変更はうまくいった...私は間違ったルーティングをしていた... –

関連する問題