2016-07-18 24 views
0

私が作った要求されたリソースは、HTTPメソッド「POST」MVC - 要求されたリソースがHTTPメソッドをサポートしていません「POST」

をサポートしていないメッセージ

周りの様々な記事を読みました私はHttp属性を含んでいることを確かめてください。私はまた、[FromBody]タグが含まれている両方System.Web.HttpPostSystem.Web.Mvc.HttpPost

を試してみました

私はMVC方式

ここ

私angularjsが

$http({ 
    url: '/api/entry', 
    method: 'POST', 
    headers: { 
     'Content-Type': 'application/json', /*or whatever type is relevant */ 
     'Accept': 'application/json' /* ditto */ 
    }, 
    data: { 
     'data': $scope.userEntry 
    } 
}).success(function (data, status, headers, config) { 
    $scope.Message = "Saved successfully"; 
    $scope.working = false; 
}).error(function (data, status, headers, config) { 
    $scope.title = "Oops... something went wrong"; 
    $scope.working = false; 
}); 

を呼び出しているに投稿しようとしているangularjsページを持っていますここに私のMVCメソッドがあります

[System.Web.Mvc.HttpPost] 
private async void Post([FromBody] UserEntry userEntry) 
{ 
    if (userEntry.UserEntryID > 0) 
    { 
     // update 
     var dbUserEntry = this.db.UserEntries 
       .Where(u => u.UserEntryID == userEntry.UserEntryID) 
       .FirstOrDefault(); 

     dbUserEntry.TeamName = userEntry.TeamName;    
    } 
    else { 
     // insert 
     this.db.UserEntries.Add(userEntry); 
    } 

    await this.db.SaveChangesAsync(); 
} 

どんなに私は私のPostメソッドにアクセスし、デフォルトであるあなたが/api/を使用してきたように、ここでの混乱があるように思える@デビッドすべてのヘルプは大幅に

+0

以上の非同期タスクのメソッドを好む... –

答えて

3

あなたの方法はプライベートです。 公開にしてください。よりうまくいくはずです。

補足として、voidを使用してasyncを使用することを再検討したいことがあります。

は非同期無効メソッド

スクリプトブロックから `headers`を削除して、もう一度試してhttps://msdn.microsoft.com/en-us/magazine/jj991977.aspx

+0

私はどのように愚かです。追加の読書もありがとう – David

1

を高く評価し

上記と同じエラーを取得して維持することはできませんしようとするものweb apiのルートですが、あなたはmvcを使用していると述べています。
コントローラがApiControllerから継承されている場合は、Web APIです。その場合、System.Web.Http.Post属性で違いが生じます。
@smoksnesのように、どのような場合でもメソッドを公開できるようにする必要があります。

+0

は、質問ごとに、彼は、MVCの使用していますwep apiではありません。 –

関連する問題