我已经下载了以下项目: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);
服务器API错误: 的 Error2_In_API_Method
我可以进行GET操作,但我的所有POST操作都是NULL?
答案 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()