2016-10-24 33 views
1

私は自分のプロジェクトに必要な機能を快適に感じるまで、microsoft asp.net IDチュートリアルサンプルアプリ[ここ] [1]を使用しています。私は別のMVC Webアプリケーションから呼び出すことができ、ローカルのSQLサーバーに対して認証/承認を行い、WebアプリケーションからAPIにログイン資格を渡してヘッダートークンなどを取得できるようにする必要があります。データをプルするか、またはデータをdbに戻すための要求があるかどうかをトークンでチェックします。APIを呼び出すときに404エラーが発生する

私は送信ボタンをキャッチするボタンといくつかのjQueryを使って、単にフォームがクリックされている例ソリューションにWebアプリケーションプロジェクトを追加しました:

$(document).ready(function() { 

    var register = function() { 
     var dataa = { 
      Email: "[email protected]", 
      Password: "password", 
      ConfirmPassword: "password" 
     }; 

     $.ajax({ 
      type: 'POST', 
      url: '/api/Account/Register', 
      contentType: 'application/json; charset=utf-8', 
      data: JSON.stringify(dataa) 
     }); 
     return false; 
    } 

    $('#btnRegister').click(register); 
}); 

、その後、ここでは、API自体のコントローラであり、 :私は、APIの登録機能を呼び出すしようとすると

[Authorize] 
[EnableCors("*","*","*")] 
[RoutePrefix("api/Account")] 
public class AccountController : ApiController 
{ 
    [AllowAnonymous] 
    [Route("Register")] 
    [HttpPost] 
    public async Task<IHttpActionResult> Register(RegisterBindingModel model) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     var user = new ApplicationUser() { UserName = model.Email, Email = model.Email }; 

     IdentityResult result = await UserManager.CreateAsync(user, model.Password); 

     if (!result.Succeeded) 
     { 
      return GetErrorResult(result); 
     } 

     return Ok(); 
    } 
} 

私は404エラーを取得(jqueryの-1.10.2.jsを:8720 POST http://localhost:35714/api/Account/Register 404(見つかりません))ブラウザに。フロントエンドからどのようにしてapi関数を呼び出すことができますか?この呼び出しはWebアプリケーションコントローラから行うことができますか?それともクライアント側であるべきですか?

Microsoft.aspnet.corsとmicrosoft.aspnet.webapi.corsを追加し、webapiconfig.csにconfig.EnableCors()を追加し、apicontrollerから継承するaccountcontrollerに[EnableCors]を追加しました。

+1

'/ API /アカウント/ Register''(それは絶対にするために、URLに '/'を付加) – haim770

+0

''とAPI /アカウント/ Register''' を交換してください、私はそれだけでなく、私の更新に気づきました私はすでにそれを試みたことを反映するコード、同じエラー。 –

+1

あなたのあなたのURLが本当に '/ api/Account/Register'であることを確認しましたか? – haim770

答えて

0

あなたのAPIメソッドにHttpPost属性を追加する必要があります。

[AllowAnonymous] 
[Route("Register")] 
[System.Web.Http.HttpPost] 
public async Task<IHttpActionResult> Register(RegisterBindingModel model) 
{ 
    ... 
+0

私はこれを行い、CORSも実装しましたが、今はエラーコード500 –

0

はこれを試してみてください。

$(document).ready(function() { 
    var register = function() { 
     var dataa = { 
      Email: "[email protected]", 
      Password: "password", 
      ConfirmPassword: "password" 
     }; 

     $.ajax({ 
      type: 'POST', 
      url: '/api/Account/Register', 
      contentType: 'application/json; charset=utf-8', 
      data: {model: JSON.stringify(dataa)} 
     }); 
     return false; 
    } 

    $('#btnRegister').click(register); 
}); 
関連する問題