Unter Verwendung von ASP.NET MVC 5 möchte ich den entsprechenden HTTP-Statuscode für verschiedene Szenarien zurückgeben (401 für Benutzer wird nicht authentifiziert, 403, wenn Benutzer kein Recht für eine Ressource hat usw.) und dann in jQuery behandeln.
Aber das Problem ist, wenn ich versuche, 401 zurückzugeben, gibt es immer "200: OK" zurück. MVC 5 RC1 gab "302: Found" anstelle von 401, also konnte ich einen Workaround ( HttpStatusCodeResult (401 ) gibt "302 Found" zurück ). Aber jetzt bin ich von MVC 5 RC1 zu MVC 5 gewechselt und dieses Verhalten hat sich geändert. Jetzt ist es immer "200: OK". Meine Umgehung ist also nutzlos, ich kann natürlich 200 durch nichts ersetzen.
%Vor%Wie löst man das?
Die MVC 5+ Pipeline ändert 401 Antwortcodes.
Option 1 Mit .net 4.5
Sie können HttpContext.Response.SuppressFormsAuthenticationRedirect
auf true setzen.
z.B. in Ihrer benutzerdefinierten AuthorizeAttribute.cs
%Vor%Option 2. Wenn Sie .net 4.5 nicht verwenden
%Vor%und in web.config
%Vor%Die Lösung des Problems finden Sie in Ссылка
Sie müssen Ihre Startup
-Klasse wie folgt ändern:
}
Ich benutze simuler Code, der 404 zurückgibt. Dein Code könnte sein:
%Vor% In Statup.cs musste ich AutomaticChallenge
auf false
setzen. Sobald ich das getan hatte, hörte es mit der URL-Weiterleitung auf (was zu 200 Status führte) und gab mir den 401 Status, den ich wollte.
Wenn Sie eine Cookie-Middleware eingerichtet haben:
%Vor%Tags und Links asp.net-mvc c# asp.net asp.net-mvc-5 http-status-codes