2016-07-28 44 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 –