2016-07-28 47 views
0

我正在使用web api后端和angular2前端工程。我遇到了显示angular2中的服务器错误的问题。每当服务器发生错误时,都会引发CORS错误。在angular2中显示web api异常

Here is my sample api 

public IActionResult Post([FromBody] Visitor model) 
{ 
    if (model == null) throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NoContent) 
    { 
     ReasonPhrase = "Missing model in post" 
    }); 
    _registerService.register(model); 
    return Ok(model);  
} 


And here is my angular2 service 


addVisit(visit: Visit) { 

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

return this.authHttp 
    .post(`${this._visitorsUrl}` + siteId, body, options) 
    .map(res => { 
     res.json(); 
     console.log("map: " + JSON.stringify(res.json())); 
    }) 
    .catch(err => console.log(err)); 

}

当模型为null,则返回错误502或CORS错误,但在模型不为空,将retrn 200

我的问题是我怎么能显示错误的服务器返回。

回答

0

你不能加入类似

error => this.errorMessage = <any>error; 

的,如果在您检查空?我在.subscribe到.map中使用它,但我相信它就是这样的东西,你在找什么?

+0

我已经做到了,但仍然不能正常工作 handleError(error:any)let errMsg =(error.message)? error.message: error.status? '$ {error.status} - $ {error.statusText}':'服务器错误'; console.error(errMsg); //登录到控制台而不是 return Observable.throw(errMsg); } –

+0

在这里你有另一个基本上做同样的例子,检查getCountriesByRegion(),如果它没有显示它可能是因为别的东西? http://www.waynehong.com/javascript/angular-2-service-example-typescript/ –

0

应该转换到InternalServerError响应,如图所示在下面的代码片段

throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) 
      { 
       ReasonPhrase = "Missing model in post", 
       Content = new StringContent("Missing Model in post") 
      }); 

然后,您就可以看到错误的状态文本属性误差角返回内容。

+0

我试过了,但没有返回正确的错误信息 –

+0

它返回了什么? – Jigar

+0

XMLHttpRequest无法加载500 –