2010-11-24 4 views
5

Voici ce que je veux faire:Comment configurer un gestionnaire Http dans IIS 7?

  1. J'ai créé un projet de bibliothèque de classes et cela a une classe qui implémente l'interface IHttpHandler. Appelons cette classe ZipHandler. Let's dire que l'espace de noms est Zip.
  2. Je veux que chaque fois que Http demande vient d'un fichier zip, mon ZipHandler doit gérer, indépendamment du fait que la demande est à une application Asp.Net ou un répertoire virtuel normal.

Requêtes:

  1. Est-il possible (il devrait être donné le battage médiatique sur pipeline intégré etc. dans IIS 7)?
  2. Comment le faire?

Répondre

6

Voici les informations que je cherchais:

Si vous voulez enregistrer votre commande gestionnaire HTTP au niveau du serveur Web IIS 7 , vous devez compiler votre gestionnaire HTTP dans un ensemble fortement nommé et le déployer vers l'assembly global Cache (GAC) car IIS 7 sélectionne uniquement les assemblys déployés vers le GAC. Il ne prend pas les assemblies déployées n'importe où ailleurs comme le répertoire bin d'un site Web particulier ou l'application Web .

Nous visons à ajouter ce gestionnaire au niveau du serveur Web. Après avoir déployé le gestionnaire dans GAC, ouvrez le fichier web.config disponible au niveau du serveur Web (cliquez avec le bouton droit de la souris et naviguez -> ouvrir le site Web.show config ici) et de mettre quelque chose comme ça dans la section de gestionnaire (le nom complet de la classe):

<handlers> 
<add name=”Ch8_RssHandler” path=”*.rss” verb=”*” 
type=”ProIIS7AspNetIntegProgCh8.RssHandler, Version=1.0.0.0, Culture=neutral, 
PublicKeyToken=369d834a77” preCondition=”integratedMode” /> 
</handlers> 

Note: Les extraits d'information (1er paragraphe et exemple de code) sont extraites du livre:
Professional IIS 7 and ASP.Net Integrated Programming by Dr. Shahram Khosravi

On dirait un très beau livre :)

3

Cet article MSDN How to: Configure an HTTP Handler Extension in IIS explique ce que vous devrez faire. Voir le paragraphe pour le mode intégré.

L'extension de nom de fichier pour .zeip doit être enregistrée dans l'élément httpHandlers et dans l'élément des gestionnaires.

Vous devrez cliquer sur Ajouter un gestionnaire géré dans le volet Actions. L'utilisation du Gestionnaire des services Internet dans IIS 7.0 pour ajouter une extension de gestionnaire personnalisée équivaut à enregistrer l'extension du gestionnaire dans le fichier Web.config.

1

Je l'ai fait un test dans VS2012

Mon gestionnaire est comme ce

namespace MyProject 
{ 
    public class ZipHandler: IHttpHandler 
    { 
     public bool IsReusable { get { return true; } } 
     public void ProcessRequest(HttpContext context) { ... } 
    } 
} 

Mon web.config est

<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    <system.webServer> 
    <handlers> 
     <add 
     name="ZipHandler" 
     path="*.zip" 
     verb="*" 
     type="MyProject.ZipHandler" 
     preCondition="integratedMode" 
     /> 
    </handlers> 
    </system.webServer> 

</configuration> 

De cette façon, je peux demander « foo.zip » et que mon gestionnaire obtenir la demande.

Il y a aussi un message de Rick Strahl qui peut vous aider à résoudre les problèmes concernant les gestionnaires et les modules: HttpModule and HttpHandler sections in IIS 7 web.config files

Questions connexes