Question

Quels sont les avantages d'utiliser un ashx ou un gestionnaire? De plus, en ai-je besoin si j'utilise MVC (et pourquoi pas)?

Le cadre est-il important (2.0 +)?

Pourquoi voudrais-je utiliser un gestionnaire? On m'a récemment recommandé d'en utiliser une pour récupérer une image, mais je ne sais pas pourquoi.

Merci pour votre temps.

Modifier - un gestionnaire est-il plus rapide?

Était-ce utile?

La solution

Quelques exemples:

  1. Génération d'image dynamique : vous pouvez écrire des gestionnaires renvoyant des images pilotées par les données en créant un gestionnaire ASHX renvoyant des données d'image, puis en utilisant cette URL dans vos tags. par exemple. <img alt="user's custom icon" src="Icon.ashx?username=bob"></img>

  2. Renvoyer des données XML ou JSON basées sur REST en code AJAX sur le client.

  3. HTML personnalisé : restituez le code HTML totalement personnalisé pour une page lorsque l'infrastructure Web Forms ASP.NET ou MVC est trop restrictive

Je crois que cela est disponible depuis la version 1.0

Autres conseils

L'objectif des gestionnaires dans les projets non-MVC est de fournir un type de réponse codée, en dehors du code HTML. En règle générale, un gestionnaire renvoie XML (rss, RESTful, etc.), JSON pour jQuery ou autre code Javascript, ou parfois simplement des données pures, telles que des téléchargements binaires de fichiers. J'ai utilisé des gestionnaires pour même renvoyer du code JavaScript spécial à exécuter sur le client, comme moyen de charger paresseux des binaires volumineux ou des exigences sur un & "Demand-only &"; approche. Plus ou moins, un gestionnaire serait utilisé pour retourner & "Autre que HTML &";.

.

Dans MVC, vous vous écartez des gestionnaires et utilisez le contrôleur pour renvoyer les données de votre choix. Donc, dans la méthode comme:

mywebsite.com/restapi/content/56223

Votre RestfulContentController aurait une méthode pour Index (), qui ne retournerait PAS un View (), mais un XML pur ou JSON.

public class JSONContentController : Controller
{
  public JsonResult Index(int ContentID)
  {
    // get Content() by ContentID
    //

    // return a JSON version
    return Content().SerializeToJSON();
  }
}

Ils sont très utiles si vous travaillez dans un environnement où vous n’avez pas accès à IIS mais souhaitez modifier des choses telles que les en-têtes de réponse d’expiration très éloignés pour optimiser la mise en cache de fichiers tels que css, images, JavaScript

.

Pour les images, vous pouvez effectuer des opérations telles que l'optimisation à la volée, ainsi demander des images telles que image.jpg.ashx? w = 180 & amp; quality = 70, puis utiliser le gestionnaire pour livrer l'image en fonction des paramètres. passé dans la chaîne de requête

aspx hérite de la page qui implémente IRequireSessionState. Donc, si vous appelez via Ajax, asp.net doit alors verrouiller la session avant de poursuivre le traitement.

Pour le fichier ashx, il est sans état. Sauf si vous héritez d'IRequireSessionState pour gérer l'état.

Utilisez ashx pour tous les appels Ajax et utilisez aspx pour une page purement asp.net.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top