Ich habe einen einfachen AngularJS $ http-Block wie so;
$http(req).then(function successCallback(response) {
alert(response);
}, function errorCallback(response) {
alert(response);
});
Mein Problem ist, dass, wenn mein ASP.NET-Controller einen HTTP-Fehlercode zurückgibt, erhält der JS errorCallback ein Objekt wie;
{data: "", status: 304, config: Object, statusText: "Not Modified"}
Egal was ich tue, kann ich nicht scheinen, um die Dateneigenschaft in meinem Rückruf zu füllen.
Wenn stattdessen mein Controller einen HTTP OK-Code zurückgibt, wird der Rückruf 'success' aufgerufen und die Rückgabedaten sind verfügbar. Aber nicht wenn es ein Fehler ist ... Hilfe!
Die Controller-Funktion ist ein WebAPI-POST-Handler und sieht so aus;
[System.Web.Http.HttpPost]
public async Task<HttpResponseMessage> Save([FromBody]object data)
{
...<snip>...
return new HttpResponseMessage
{
StatusCode = HttpStatusCode.NotModified,
Content = new JsonContent(JObject.FromObject(new
{
success = false,
message = "User not authorised to perform this action."
}))
};
}
Das gleiche Konstrukt, aber mit;
StatusCode = HttpStatusCode.OK
Wird erfolgreich im Erfolgsrückruf im JS empfangen.
Ist das nur ein Tippfehler in Ihrem Code? "Daten" vs "Antwort"? –
@EvanTrimboli: ja, behoben. –
Was erwarten Sie bei einem Fehler in 'Daten'? – Rob