Maison > développement back-end > C++ > Comment puis-je transmettre des données à mon contrôleur d'erreurs ASP.NET MVC pour une gestion personnalisée des erreurs ?

Comment puis-je transmettre des données à mon contrôleur d'erreurs ASP.NET MVC pour une gestion personnalisée des erreurs ?

Patricia Arquette
Libérer: 2025-01-14 10:21:46
original
684 Les gens l'ont consulté

How Can I Pass Data to My ASP.NET MVC Error Controller for Custom Error Handling?

Gestion personnalisée efficace des erreurs dans ASP.NET MVC en transmettant des données au contrôleur d'erreurs

Une gestion robuste des erreurs est essentielle pour une expérience utilisateur positive dans les applications ASP.NET MVC. Alors qu'un événement Application_Error global dans Global.asax.cs offre une gestion centralisée des erreurs, la transmission efficace des données pertinentes au contrôleur d'erreurs nécessite une approche stratégique.

Cet exemple utilise des chaînes de requête pour transmettre les informations d'erreur au contrôleur d'erreur, évitant ainsi le besoin de plusieurs routes d'erreur. Le gestionnaire Application_Error est modifié pour rediriger vers l'action appropriée dans le contrôleur d'erreur, intégrant le message d'erreur dans la chaîne de requête :

<code class="language-csharp">protected void Application_Error(object sender, EventArgs e)
{
    Exception exception = Server.GetLastError();
    Response.Clear();

    HttpException httpException = exception as HttpException;

    if (httpException != null)
    {
        string action;

        switch (httpException.GetHttpCode())
        {
            case 404:
                action = "NotFound";
                break;
            case 500:
                action = "ServerError";
                break;
            default:
                action = "GenericError";
                break;
        }

        Server.ClearError(); // Clear the server-side error

        Response.Redirect(String.Format("~/Error/{0}?message={1}", action, Server.UrlEncode(exception.Message)));
    }
}</code>
Copier après la connexion

Les actions du contrôleur d'erreur correspondantes sont ensuite mises à jour pour récupérer le message de la chaîne de requête :

<code class="language-csharp">// GET: /Error/NotFound
public ActionResult NotFound()
{
    string message = Request.QueryString["message"];
    ViewBag.Message = message; // Or use a ViewModel
    return View();
}</code>
Copier après la connexion

Cette méthode simplifie la gestion des erreurs en tirant parti du routage existant. Cependant, il est crucial de prendre en compte les implications potentielles en termes de performances, en particulier dans les environnements à fort trafic, car une utilisation répétée pourrait avoir un impact sur l'efficacité en raison de facteurs tels que la gestion des objets de session. Un examen attentif et une optimisation sont nécessaires pour les déploiements en production.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal