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/...
Vous devez vous connecter pour publier un commentaire.
- Je utiliser ces étapes:
ET:
ET la vue index dans le dossier d'Erreur:
ET la dernière étape:
Je n'ai jamais été en mesure d'obtenir CustomErrors dans un site web.config et MVC jouer bien ensemble, donc j'ai renoncé. - Je faire à la place.
Mondiale.asax:
Dans ErrorsController:
Dans le web.config:
Qui a travaillé pour moi, peu importe où ou comment l'erreur est créé. 401 n'est pas géré il y a pour le moment, mais vous pouvez ajouter assez facilement.
Peut-être que je manque quelque chose, mais MVC a un défaut global
ErrorHandlerAttribute
qui utilise des messages d'erreur personnalisés. Cela s'explique assez bien ici.Tout ce que vous devez faire est de tourner sur
custom errors
dans la config, puis le programme d'installation personnalisé erreur de redirection, de préférence à une statiqueHTML
fichier (dans le cas où il y a des erreurs avec l'app).Si vous préférez puisse également personnalisé
Controller
pour afficher les erreurs. Dans l'exemple suivant, j'ai simplement utilisé le routage par défaut à unController
nomméError
, avec une action appeléeIndex
, et le paramètre de chaîne nomméeid
(pour recevoir le code d'erreur). Vous pouvez bien sûr utiliser tout de routage que vous désirez. Votre exemple n'est pas de travail parce que vous êtes à essayer de lier directement dans lesViews
répertoire, sans passer par unController
. MVC .NET ne sert pas de demandes pour leViews
dossier directement.La ErrorHandlerAttribute peut également être utilisé de façon extensive avec
Controllers/Actions
pour rediriger les erreurs nomméViews
liées à laController
. Par exemple pour afficher leView
nomméMyArgumentError
lorsqu'une exception de typeArgumentException
se produit, vous pouvez utiliser:Bien sûr, une autre option est de mettre à jour le stock
Error
page dansShared
.Regarder la première partie de votre site web.config là, vous êtes en pointant sur un .page aspx directement. Quand j'ai configurer mes pages d'erreur je l'ai signalé directement à un contrôleur et l'action. Par exemple:
Et j'ai eu une Erreur du contrôleur avec toutes les actions requises. Je ne pense pas que MVC joue bien avec les appels directs .les pages aspx.