【问题标题】:Angular 4 and ASP.Net MVC 5 : returns an Empty JSON in responseAngular 4 和 ASP.Net MVC 5:返回一个空 JSON 作为响应
【发布时间】:2017-07-11 07:54:25
【问题描述】:

在将 Angular 应用程序与 asp.net MVC 合并后,从 Angular 调用 API 返回一个空 JSON。

angular和asp.net在同一个域中。

如果我使用 PostMan 调用 API,我会得到一个带有结果的 JSON。但如果我在 Angular 应用程序中调用它,我的 JSON 结果为空。

在同一域中合并和服务后,有没有使用asp.net MVC通信角度应用程序的提示?

更新 1:

调用Webservice的代码:

 getSheets(): Observable<Sheet[]> {
return this.http.get(this.config.apiUrl + '/api/SheetsRelationAPI', 
this.jwt())
  .map(this.extractData)
  .do(data => console.log('SheetsData:', data))  // debug
  .catch(this.handleError);
 }


/**
* Handle HTTP error
*/
 private handleError(error: any) {
// In a real world app, we might use a remote logging infrastructure
// We'd also dig deeper into the error to get a better message
const errMsg = (error.message) ? error.message :
  error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error(errMsg); // log to console instead
return Observable.throw(errMsg);
  }

// private helper methods

 private jwt() {
// create authorization header with jwt token
const currentUser = JSON.parse(atob(this.cookie.getCookie('currentUser')));
  if (currentUser && currentUser.access_token) {
  const headers = new Headers({ 'Authorization': 'Bearer ' + currentUser.access_token},
  );
  return new RequestOptions({ headers: headers });
  }
  }
   private extractData(res: Response) {
const body = res.json();
return body || [];
 }

更新 2:

我注意到如果我从外部域调用我的 API,它会响应 2 次:

使用谷歌浏览器检查元素检查网络:

第一个响应是“zone.js”发起者,第二个响应是“其他”发起者

如果我从域内部调用 API,我只会收到来自“zone.js”发起者的响应,它会返回一个空 JSON。

更新 3

export class OtherComponent implements OnInit {
sheets: Sheet[] = [];
errorMessage: string;
constructor(private httpService: HttpService) {
    // this.sheets = this.ichartHttp.getSheets();
    // console.log(this.sheets);
}
getSheets() {
    this.httpService.getSheets()
        .subscribe(
        sheets => this.sheets = sheets,
        error => this.errorMessage = <any>error
        );
}

ngOnInit() {
    this.getSheets();
}
}

【问题讨论】:

  • 你用来调用网络服务的新角码是什么?
  • @Unlockedluca 我更新了我的问题
  • 你在哪里调用getSheets()方法?
  • 在调用 getsheets 方法的我的 OtherComponent 中
  • 也许你也可以分享一下。因为这部分看起来不错。

标签: asp.net json asp.net-mvc angular


【解决方案1】:

问题在于我的身份验证方法, 我使用两种类型的身份验证,MVC 和 WebAPI,如果我向同一域下的 API 发送请求,它们会发生冲突。

所以我的回答是:你的 Angular 代码看起来不错,看看你的中间件项目

【讨论】:

    猜你喜欢
    • 2021-01-24
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多