2016-07-28 13 views
0

Ich arbeite an einem Projekt mit Web-API-Backend und angular2 Frontend. Ich habe ein Problem mit dem Serverfehler in angular2. Bei jedem Serverfehler wird ein CORS-Fehler ausgelöst.Web-API-Ausnahme in angular2 anzeigen

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)); 

}

Wenn das Modell ist null zurückgeben Fehler 502 oder CORS Fehler, aber wenn das Modell nicht null ist, wird es RETRN 200

Mein Problem ist, wie kann ich zeigen den Fehler, dass die Serverrückgabe.

Antwort

0

Könnten Sie nicht so etwas wie

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

auf der hinzufügen, wenn in dem Sie für null überprüfen? Ich benutze es in einem .subscribe zu einer .map, aber ich glaube, es ist etwas wie das, wonach Sie suchen?

+0

Ich habe das schon gemacht, aber immer noch nicht funktioniert handleError (Fehler: beliebig) { lassen errMsg = (error.message)? error.message: error.status? '$ {error.status} - $ {error.statusText}': 'Serverfehler'; console.error (errMsg); // log statt zur Konsole return Observable.throw (errMsg); } –

+0

Hier haben Sie ein anderes Beispiel im Grunde genommen das gleiche, überprüfen Sie getCountriesByRegion(), wenn es nicht angezeigt wird, könnte es wegen etwas anderes sein? http://www.waynehong.com/javascript/angular-2-service-example-typescript/ –

0

Sie sollten die Antwort auf InternalServerError konvertieren und Inhalt zurück, wie unter

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

im Codeausschnitt gezeigt werden Sie dann in der Lage sein, den Fehler in status Eigenschaft Fehler in Winkeln zu sehen.

+0

Ich habe es versucht, aber nicht die richtige Fehlermeldung zurückgegeben –

+0

Was hat es zurückgegeben? – Jigar

+0

XMLHttpRequest kann nicht geladen werden 500 –