2009-08-29 8 views
4

C'est probablement très simple mais cela me déroute vraiment. Quand je l'IHttpHandler mettre en œuvre, je crée un gestionnaire, puis l'enregistrer comme tant dans le web.config:Quelle est la différence entre faire un gestionnaire w/ashx/axd et utiliser quelque chose que j'ai inventé moi-même dans ASP.NET?

IIS6 Portion: 
<httpHandlers> 
    <add verb="*" path="*.randomextension" type="MyProgramNameSpace.MyHandler" /> 
</httpHandlers> 

IIS7 Portion: 
<handlers> 
    <add name="mine" verb="*" path="*. randomextension" type ="MyProgramNameSpace.MyHandler" /> 
</handlers> 

Il semble fonctionner assez bien et apprendre à utiliser différents gestionnaires et options pour cela. Cela me permet d'ignorer la classe Page et ainsi de suite en accédant directement au pipeline. Cependant, de temps en temps je continue à courir dans la documentation où il dit que je dois utiliser quelque chose à propos de ashx ou axd avec quelque chose.

De quoi s'agit-il? Comment cela doit-il faire avec les créations de handler?

Ceci est probablement très facile, mais pour une raison quelconque, je suis complètement confus lorsque je parle de ce gestionnaire ashx ou axd.

Répondre

6

Le gestionnaire .asxh est simplement un mappage de gestionnaire générique préexistant/prédéfini. Contrairement au gestionnaire .aspx, vous n'êtes pas limité à dériver à partir de Page et vous n'obtenez pas le pipeline d'événements de gestionnaire de page ASP.NET complet. Généralement, vous utilisez des fichiers .ashx pour gérer les demandes non-page qui prennent en entrée ou retournent en tant que contenu non standard en sortie.

Le différent d'un gestionnaire .ashx et d'un IHttpHandler personnalisé n'est pas grand chose, vraiment. Une grande partie de la configuration est prédéfinie pour les fichiers .ashx, mais vous êtes lié à cette extension. Avec un IHttpHandler personnalisé complet, vous avez une liberté totale et totale, mais vous devez le configurer à partir de zéro.

2

Si vous décidez d'utiliser l'extension par type de fichier, votre gestionnaire est approprié.

Si en revanche, vous essayez de renvoyer des données, sans une extension particulière, l'extension ashx/ahd est tout aussi bonne. Par exemple, si vous disposez d'une collection d'images stockées dans une base de données, vous pouvez enregistrer un gestionnaire .JPG qui extrait l'image de la base de données au lieu du disque dur. Vous pouvez également créer un ASHX pouvant renvoyer n'importe quel type d'image.

L'inscription d'une extension pourrait rendre l'URL plus "normale" à l'utilisateur final, tandis qu'un ashx semble plus générique (même geek).

3

Il n'y a vraiment pas de différence. Les fichiers .ashx implémentent IHttpHandler comme vous le faites. Seul .ashx est un gestionnaire pré-enregistré, vous n'avez donc pas besoin de l'ajouter au web.config vous-même, c'est déjà fait pour vous.