Comment retourner du code HTTP plus spécifique (comme 401.X)

Voici un article sur certains codes HTTP étendus:

IIS 7.0, IIS 7.5 et IIS 8.0 définissent plusieurs codes d’état HTTP qui indiquent une cause plus spécifique d’une erreur 401. Les codes d’état HTTP spécifiques suivants sont affichés dans le navigateur client, mais pas dans le journal IIS:

  • 401.1 – La connexion a échoué.
  • 401.2 – La connexion a échoué en raison de la configuration du serveur.
  • 401.3 – Non autorisé en raison d’une liste de contrôle d’access sur la ressource.
  • 401.4 – Échec de l’autorisation par le filtre.
  • 401.5 – Échec de l’autorisation par l’application ISAPI / CGI.

J’ai besoin de codes HTTP étendus personnalisés comme ceux-ci:

  • 401.10 – Utilisateur non trouvé
  • 401.11 – Non correspondance de mot de passe utilisateur
  • 401.12 – Le compte d’utilisateur est verrouillé
  • 401.13 – Le compte d’utilisateur a expiré

Comment renvoyer ces codes d’erreur étendus 401 à partir d’une application .NET MVC?

Dans votre méthode d’action, vous définissez les codes d’état manuellement:

Response.StatusCode = 401; Response.SubStatusCode = 10; 

De plus, vous pouvez utiliser l’énumération HttpStatusCode dans System.Net:

 Response.StatusCode = (int)HttpStatusCode.Unauthorized; 

Comment renvoyer ces codes d’erreur étendus 401 à partir d’une application .NET MVC?

Vous ne pouvez pas les renvoyer de votre application dans le sens où l’utilisateur les recevra, car HTTP ne prend pas en charge les codes de sous-état.

Ils sont utilisés uniquement pour la journalisation et le traçage IIS, seul le code d’état “majeur” est renvoyé.

Utilisez Response.StatusCode et Response.SubStatusCode