Comment puis-je afficher des pages d'erreur personnalisées en Asp.Net Mvc 3?

Je veux que toutes les erreurs 401 être redirigé vers une page d'erreur personnalisée. J'ai d'abord configuration de l'entrée suivante dans mon web.config.

<customErrors defaultRedirect="ErrorPage.aspx" mode="On">
  <error statusCode="401" redirect="~/Views/Shared/AccessDenied.aspx" />
</customErrors>

Lors de l'utilisation de IIS Express je recevoir le stock IIS Express 401 page d'erreur.

Dans le cas où je n'utilisez pas de IIS Express une page vide est retournée. À l'aide de Google Chrome onglet Réseau pour inspecter la réponse, je vois que pendant que la page est vide un état 401 est retourné dans les en-têtes

Ce que j'ai essayé jusqu'à présent est à l'aide de suggestions de cette SORTE de réponse depuis que je suis à l'aide de IIS Express, mais en vain. J'ai essayé d'utiliser une combinaison <custom errors> et <httpErrors> avec pas de chance - la norme de l'erreur ou de la page blanche est toujours affiché.

La httpErrors section ressemble à ça pour le moment basé sur le lien de la DONC, la question ci-dessus ( j'ai aussi trouvé un autre très prometteur répondre toutefois pas de chance - vide de réponse)

<system.webServer>
  <httpErrors  errorMode="DetailedLocalOnly" existingResponse="PassThrough" >
    <remove statusCode="401"  />
    <error statusCode="401" path="/Views/Shared/AccessDenied.htm" />
  </httpErrors>

 <!-- 
 <httpErrors  errorMode="Custom" 
             existingResponse="PassThrough" 
             defaultResponseMode="ExecuteURL">
      <remove statusCode="401"  />
  <error statusCode="401" path="~/Views/Shared/AccessDenied.htm" 
         responseMode="File" />
 </httpErrors>
 -->
</system.webServer>

J'ai même modifié le applicationhost.config fichier et modifié <httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath"> à <httpErrors lockAttributes="allowAbsolutePathsWhenDelegated"> basé sur les informations de iis.net. Au cours de mes activités j'ai aussi réussi à tomber sur cette erreur tel que décrit dans DONC, la question d'une autre.

Comment puis-je afficher des pages d'erreur personnalisées en Asp.Net Mvc 3?

Informations supplémentaires

Le contrôleur suivant actions ont été décorées avec le Authorize attribut pour un utilisateur spécifique.

[HttpGet]
[Authorize(Users = "domain\\userXYZ")]
public ActionResult Edit() 
{
   return GetSettings();
}

[HttpPost]
[Authorize(Users = "domain\\userXYZ")]
public ActionResult Edit(ConfigurationModel model, IList<Shift> shifts)
{
    var temp = model;
    model.ConfiguredShifts = shifts;
    EsgConsole config = new EsgConsole();

    config.UpdateConfiguration(model.ToDictionary());
    return RedirectToAction("Index");
}
  • Je voudrais aussi savoir comment obtenir des messages d'erreur personnalisés affiché (dans mon cas une erreur 403) - 500 erreurs, beau travail...
  • Fait une petite bibliothèque pour rendre cela plus facile. Il est disponible à: github.com/Buildstarted/Errlusion
  • Juste pensé que vous pourriez être intéressé à voir ce DONC post
  • ce poste fait trie les problèmes que j'avais, pas sûr pour l'OP. Aussi aucune des réponses à cette question de parler de toutes les options de configuration nécessaires, il est donc difficile d'attribuer le bounty...
  • Bounty accordé, mais aucune des réponses n'étaient ce que je cherchais, de meilleures réponses à @CBRRacer du lien
  • Je trouve que cela a été répondu sur ce post stackoverflow.com/questions/5226791/...

InformationsquelleAutor Ahmad | 2011-07-18