2016-07-27 13 views
1

私は次のプロジェクトをダウンロードしました:http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api。私はそれをVS2015で実行し、IISは表現します。プロジェクトは問題ありませんが、私はAPIを角2で呼びたいと思っています。APIモデルへの角2、typescript投稿はnullです

私はVisual Studio Codeでプロジェクトをセットアップし、Angular 2とTypeScriptでプロジェクトを作成しました。 Registerという名前のAPIメソッドに投稿しようとすると、値はnullになりますか?

私のVisual Studioのコードサービス(Angular2)

import { Injectable } from 'angular2/core'; 

import { Account } from '../account/Account'; 
import { RegisterBindingModel } from '../account/RegisterBindingModel'; 
import {Http, Response, Headers, RequestOptions} from 'angular2/http'; 
import {Observable} from 'rxjs/Observable'; 
import 'rxjs/Rx'; 

@Injectable() 
export class AccountService { 
    constructor(private _http: Http) { 

    } 

    createAccount(account: Account): Observable<string> { 
     console.log('accountService.createAccount'); 
     let body = JSON.stringify({ account }); 
     console.log('T1' + body); 

     let headers = new Headers({ 'Content-Type': 'application/json' }); 
     let options = new RequestOptions({ headers: headers }); 

return this._http.post('https://localhost:44305/api/Account/Register', body, options) 
        .map(this.extractData) 
        .catch(this.handleError); 

ブラウザのエラーとポスト値: BrowserError

サーバーAPIエラー: Error1 Error2_In_API_Method Error2_In_API_Method

私はGET操作を実行できますが、すべてのPOST操作はNULLですか?

+0

[FromBody]属性を追加してみてください: 'Register [FromBody] RegisterBindingModel model) ' –

+0

は、アカウントを文字列化せず、そのまま本体のパラメータinsttreadとして渡します。 – harishr

+0

- Register([FromBody] RegisterBindingModelモデル)を追加すると、APIで同じエラーが発生します。オブジェクトパラメータはそこにありますが、それらはすべてNULLです。 - stringify操作を使用せず、アカウントをポストするだけの場合、穴オブジェクトはNULLです。 – Benjamin

答えて

0

私は次のものを見つけましたが、非常に巧妙ではありませんでしたが、解決策では、アカウントクラスオブジェクトを新しいオブジェクトにマップします。その後、私はそれを新しいオブジェクトを文字列化して投稿:

createAccount(account: Account): Observable<string> { 

     var obj = { Email: account.Email, Password: account.Password, ConfirmPassword: account.ConfirmPassword }; 

      let headers = new Headers({ 'Content-Type': 'application/json' }); 
      let options = new RequestOptions({ headers: headers }); 
      let body = JSON.stringify(obj); 

      return this._http.post('https://localhost:44305/api/Account/Register', body, options) 
           .map(this.extractData) 
           .catch(this.handleError); 
} 

を私はAPIの上に持っていた最初のエラーについては、私は変更することで、それを解決し、以下:

Request.GetOwinContext().GetUserManager<ApplicationUserManager>(); 

HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>(); 

そして、POSTからGetOwinContext()を得ることができました