对API模型的Angular 2,typescript post为null

时间:2016-07-27 20:55:55

标签: api razor typescript angular

我已经下载了以下项目:http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api。我在VS2015和IIS Express上运行它。该项目很好,但我想用Angular 2调用API。

所以我在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?

1 个答案:

答案 0 :(得分: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()