Ich habe einen http-Handler in meinem Server-Side-Code. Alle Antworten gehen durch den Handler. Ich implementiere Code, der überprüft, ob die Antwort auf den Client eine 2xx-Antwort ist, andernfalls (d. H. 404) zu meiner benutzerdefinierten Fehlerseite.Ändern Sie die Antwort, so dass es den Client zu meiner Error.cshtml Seite leitet?
Schließlich werde ich eine andere Fehlerseite haben, abhängig von bestimmten Kriterien, die ich auf die Anfrage und Antwort überprüfe, aber zuerst muss ich nur wissen, wie auf eine einfache error.cshtml
Seite in meinen Ansichten umgeleitet werden.
Wie ändere ich die Antwort, so dass es den Client an meine Error.cshtml
Seite (in Ansichten) leitet, anstatt zum Beispiel mit einer 404
zu reagieren?
namespace Mymodels.Models
{
public class myHandler : DelegatingHandler
{
protected async override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
var response = await base.SendAsync(request, cancellationToken);
if (!response.IsSuccessStatusCode) //inspects outgoing response to check if status code is 2xx
{
//do response work here since response is 2xx
}
else
{
//How do I modify the reponse to Error.cshtml page?, which is in my Views folder
}
return response;
}
}
}
Ich glaube, Sie dies sonst hinzufügen 'throw new Httpexception (404, "Nicht gefunden");' und Konfiguration wird ' customerrors> ' –
@AbdelrhmanMohamed ich glaube nicht, dass für mich arbeiten, weil ich sie auf verschiedene Fehlerseiten je nach dem Inhalt der Anfrage umleiten werde. Das heißt, ich bearbeite den 404-Fehler, indem ich die Anfrage lese und sie auf eine Fehlerseite umgebe, die Informationen darüber enthält, wie man die benötigten Informationen erhält. So wird es verschiedene Fehlerseiten geben, die auf ihre Anfrage zugeschnitten sind. – ConfusedDeer
Ich denke, in diesen Fällen müssen Sie nicht HTTP-Fehlercode verwenden, es sei denn, etwas im Zusammenhang mit wie '404, 403,401' müssen Sie nur Antwort mit dem benötigten HTML-Fehler zurückgeben –