Maison  >  Article  >  interface Web  >  Analyse approfondie de la page 404 personnalisée mvc4 dans asp.net (partage)

Analyse approfondie de la page 404 personnalisée mvc4 dans asp.net (partage)

奋力向前
奋力向前avant
2021-08-27 11:11:542882parcourir

Dans l'article précédent "Un article expliquant l'utilisation du proxy proxy ES6 dans JS (partage de code) ", nous avons découvert l'utilisation du proxy proxy ES6 dans JS. L'article suivant vous aidera à comprendre la page 404 personnalisée mvc4 dans asp.net. Elle a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Analyse approfondie de la page 404 personnalisée mvc4 dans asp.net (partage)

Bien sûr, il existe de nombreuses façons de définir 404. Différentes méthodes présentent différentes formes et l'expérience utilisateur est également différente. Voici deux

méthodes 1

1. Recherchez la section 2dc15ec6bc814c3aa45b55d017848bed dans web.config et cliquez pour activer 404. >Configuration web.config中找到节2dc15ec6bc814c3aa45b55d017848bed点中启用404配置 

<customErrors defaultRedirect="~/Error" mode="On" redirectMode="ResponseRedirect">
<error redirect="/Error" statusCode="404" />
</customErrors>

2、定义一个controllersError(这个随你) ,在action中如下定义

public ActionResult Index()
{
    Response.Status = "404 Not Found";
    Response.StatusCode = 404;
    return View();
}

这种方式默认为给你的url加上?aspxerrorpath=/比如:http://localhost/Error??aspxerrorpath=/123456故不推荐试用

方法二:

打开Global.asax文件定义错误转向地址(controller/action)

protected void Application_Error(object sender, EventArgs e)
{
    Exception ex = Server.GetLastError();
    if (ex is HttpException && ((HttpException)ex).GetHttpCode() == 404)
    {
        Response.Redirect("/Error");
    }
}

注意事项: 在开发时候,我们经常会在Global.asax中的Application_Error方法中使用Response.Redirect方法跳转到自定义错误页,但有时候(特别是当站点部署到 IIS 后)Application_Error方法中使用Response.Redirect方法会失效,当发生异常错误后还是显示的默认错误黄页。

其根本原因是尽管我们在Application_Error方法中使用了Response.Redirect方法,但是当系统发生异常错误后Asp.Net认为异常并没有被处理,所以不会跳转到Application_Error方法中Response.Redirect指向的页面,最终还是会跳转到默认错误黄页。

解决这个问题的办法很简单就是在Application_Error方法中使用Response.Redirect做跳转前,先调用Server.ClearError()方法告诉系统发生的异常错误已经被处理了,这样再调用Response.Redirectrrreee
2. Définissez une controllersError (cela dépend de vous), et définissez-la comme suit dans action

rrreee
Cette méthode est par défaut votre . url Ajouter ?aspxerrorpath=/ Par exemple : http://localhost/Error??aspxerrorpath=/123456 Par conséquent, il n'est pas recommandé d'essayer

Méthode 2 :

Ouvrez le fichier Global.asax et définissez l'adresse de redirection d'erreur (contrôleur/action)🎜rrreee🎜🎜Remarques : Lors du développement, nous utilisons souvent Global.asaxResponse.Redirect dans /code> est utilisée pour accéder à la page d'erreur personnalisée, mais parfois (surtout lorsque le site est déployé sur IIS) La méthode .Redirect utilisée dans la méthode >Application_Error sera invalide. Lorsqu'une erreur anormale se produit, les pages jaunes d'erreur par défaut seront toujours affichées. 🎜🎜🎜🎜La cause première est que bien que nous ayons utilisé la méthode Response.Redirect dans la méthode Application_Error, lorsqu'une erreur d'exception se produit dans le système Asp.Net code> pense que l'exception n'a pas été gérée, elle ne passera donc pas à la page pointée par <code>Response.Redirect dans la méthode Application_Error, et finira par sauter aux pages jaunes d’erreur par défaut. 🎜🎜🎜🎜Le moyen simple de résoudre ce problème est d'utiliser Response.Redirect dans la méthode Application_Error pour faire un saut avant d'appeler Server.ClearError() indique au système que l'erreur d'exception survenue a été traitée, de sorte que si vous appelez à nouveau la méthode <code>Response.Redirect, le système passera à la page d'erreur personnalisée. 🎜🎜🎜🎜Apprentissage recommandé : 🎜Tutoriel vidéo asp.net🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer