ABAZE DevS Blog

La Développement une vie une Passion

Archive for the 'ASP.NET MVC' Category

APS.MVC Server sideValidating User Input with Data Annotations

Posted by abaze17 on 21st avril 2017

You can use data annotations in MVC models to

set validation criteria for user input. Input

validation is the process by which MVC checks

data provided by a user or a web request to

ensure that it is in the right format. The following

example shows a webpage form that collects

some information from the user:

o Name. This is required input. The user

must enter some data in this field.

o Height. This must be an integer between

0 and 400.

o Email Address. This is required input. The value entered must be a valid email address.

[Required(ErrorMessage=”Please enter a name.”)]

public string Name { get; set; }

Custom validation

exemple de validation

public class CheckValidYear : ValidationAttribute

{

public override bool IsValid(object value)

{

int year = (int)value;

if (year




Posted in ASP.NET MVC | No Comments »

ASP.NET MVC 5 Error Pages and Error Logging

Posted by abaze17 on 13th juin 2016

Les pages d’erreur personnalisées et l’enregistrement global des erreurs sont deux sujets élémentaires et pourtant très confus dans ASP.NET MVC 5.

Il existe de nombreuses façons de mettre en œuvre des pages d’erreur dans ASP.NET MVC 5 et lorsque vous recherchez des conseils, vous trouverez une douzaine de threads StackOverflow différents, chacun proposant une implémentation différente.

Vue d’ensemble

Quel est le but?

Typiquement bonne gestion des erreurs consiste à:

Pages d’erreur amicales humaines

Page d’erreur personnalisée par code d’erreur (par exemple: 404, 403, 500, etc.)

Préserver le code d’erreur HTTP dans la réponse pour éviter l’indexation des moteurs de recherche

Enregistrement des erreurs globales pour les exceptions non traitées

Pages d’erreur et enregistrement dans ASP.NET MVC 5

Il existe de nombreuses façons de mettre en œuvre la gestion des erreurs dans ASP.NET MVC 5. Généralement, vous trouverez des solutions qui impliquent au moins une ou une combinaison de ces méthodes:

HandleErrorAttribute

Méthode Controller.OnException

Événement Application_Error

Élément customErrors dans web.config

Élément httpErrors dans web.config

Custom HttpModule

Toutes ces méthodes ont une raison historique et un cas d’utilisation justifiable. Il n’y a pas de solution d’or qui fonctionne pour chaque application. Il est bon de connaître les différences afin de mieux comprendre laquelle est appliquée le mieux.

Avant de passer par chaque méthode plus en détail, je voudrais expliquer quelques fondamentaux fondamentaux qui nous l’espérons aider à comprendre le sujet beaucoup plus facile.

Principes fondamentaux d’ASP.NET MVC

Le cadre MVC n’est qu’un HttpHandler branché dans le pipeline ASP.NET. La façon la plus simple de l’illustrer est d’ouvrir Global.asax.cs:

Public class MvcApplication: System.Web.HttpApplication

La navigation vers la mise en œuvre de HttpApplication révélera les interfaces IHttpHandler et IHttpAsyncHandler sous-jacentes:

Public class HttpApplication: IComponent, IDisposable, IHttpAsyncHandler, IHttpHandler

ASP.NET lui-même est un cadre plus large pour traiter les demandes entrantes. Bien qu’il puisse traiter les demandes entrantes de différentes sources, il est presque exclusivement utilisé avec IIS. Il peut être étendu avec HttpModules et HttpHandlers.

HttpModules sont branché dans le pipeline pour traiter une demande à tout moment du cycle de vie ASP.NET. Un HttpHandler est responsable de produire une réponse / sortie pour une requête.

IIS (technologie du serveur Web de Microsoft) créera une demande entrante pour ASP.NET, qui commencera par la suite à traiter la requête et éventuellement à initialiser HttpApplication (qui est le gestionnaire par défaut) et à créer une réponse:

 

IIS, ASP.NET and MVC architecture

Le point  clé est de savoir que ASP.NET ne peut traiter que les requêtes que IIS envoie à lui. Cela est déterminé par les HttpHandlers enregistrés (par exemple, par défaut, une demande à un fichier .htm n’est pas gérée par ASP.NET).

Et enfin, MVC n’est qu’un des potentiellement nombreux gestionnaires enregistrés dans le pipeline ASP.NET.

Ceci est crucial pour comprendre l’impact des différentes méthodes de gestion des erreurs.

Briser les options

HandleErrorAttribute

Le HandleErrorAttribute est un MVC FilterAttribute, qui peut être appliqué à une classe ou à une méthode:

namespace System.Web.Mvc { [AttributeUsage( AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)] public class HandleErrorAttribute : FilterAttribute, IExceptionFilter { // … } }

a portée de gestion des erreurs est limitée aux méthodes d’action dans le cadre MVC. Cela signifie qu’il ne pourra pas capturer et traiter les exceptions générées en dehors du gestionnaire ASP.NET MVC (par exemple, les exceptions à un stade antérieur du cycle de vie ou les erreurs dans d’autres gestionnaires). Il n’atteindra pas non plus une exception si la méthode d’action ne fait pas partie de la pile d’appels (par exemple, des erreurs de routage).

En outre, le HandleErrorAttribute gère uniquement 500 erreurs de serveur interne. Par exemple, cela ne sera pas pris en charge par l’attribut:

[HandleError] public ActionResult Index() { throw new HttpException(404, “Not found”); }

ous pouvez utiliser l’attribut pour décorer une classe de contrôleur ou une méthode d’action particulière. Il prend en charge les pages d’erreur personnalisées par type d’exception hors de la boîte:

[HandleError (ExceptionType = typeof (SqlException), View = “DatabaseError”)]]

Afin d’obtenir le

 fonctionnement de HandleErrorAttribute, vous devez également activer le mode customErrors sur votre web.config:

Cas d’utilisation

Le HandleErrorAttribute est le plus limité dans la portée. De nombreuses erreurs d’application contournent ce filtre et ne sont donc pas idéales pour une gestion globale des erreurs d’application.

Il s’agit d’un excellent outil pour l’action de gestion des erreurs spécifiques comme la tolérance aux pannes supplémentaires pour une méthode d’action critique cependant.

Méthode Controller.OnException

La méthode OnException est invoquée si une méthode d’action du contrôleur lance une exception. Contrairement au HandleErrorAttribute, il capture également les codes d’erreur HTTP 404 et autres et il ne nécessite pas customErrors pour être activé.

Il est implémenté en remplaçant la méthode OnException dans un contrôleur:

protected override void OnException(ExceptionContext filterContext) { filterContext.ExceptionHandled = true; // Redirect on error: filterContext.Result = RedirectToAction(”Index”, “Error”); // OR set the result without redirection: filterContext.Result = new ViewResult { ViewName = “~/Views/Error/Index.cshtml” }; }




Posted in ASP.NET MVC | No Comments »

 


Créer un Blog | Nouveaux blogs | Top Tags | 14 articles | blog Gratuit | Abus?