2009-06-12 10 views
2

J'ai des fichiers statiс dans le dossier site Web, mais j'ai besoin de vérifier les permissions pour chaque fichier. J'ai décidé d'utiliser HttpModule à cette fin.Traitement de fichiers statiques via HttpModule dans ASP.NET

ASP.NET reçoit toutes les requêtes http-(j'ai utilisé la cartographie générique) et

Le algorith est le suivant:

  1. HttpModule reçoit la demande
  2. chèques HttpModule autorisations
  3. Si l'accès est refusé alors la réponse est "Interdit". Si tout est OK alors la méthode de httpModule revient juste.
  4. DefaultHttpHandler est automatiquement utilisée pour traiter la demande pour les fichiers statiques

Le problème est que DefaultHttpHandler est pas assez efficace (il ne pas utiliser le cache de fichiers, etc.). Mais IIS (sans ASP.NET) fonctionne très bien avec les fichiers statiques. Tout ce que je veux, c'est laisser IIS servir des fichiers statiques après mes vérifications. Y a-t-il un moyen de l'implémenter?

Répondre

2

Si vous utilisez IIS7 alors oui, c'est assez facile. En mode intégré, toutes les demandes passent par le pipeline géré. Laissez IIS servir les fichiers, mais ajoutez un HttpHandler pour faire les vérifications. Ou vous pouvez utiliser l'une des méthodes d'autorisation qu'offre ASP.NET.

+0

Si vous utilisez IIS6, j'aimerais voir une solution qui n'implique pas de vérifier les droits, puis de diffuser le fichier. – ScottE

+0

J'espère que je n'ai plus jamais à traiter avec IIS6 dans les nouveaux projets;) – chris166

+0

Malheureusement j'utilise IIS6 – murad

1

J'ai une solution qui pourrait être utilisée pour diffuser le fichier dans IIS 6. Il fait toutes les bonnes choses comme les téléchargements résumables, la mise en cache côté client (etag & expire) et la mise en cache côté serveur.

http://code.google.com/p/talifun-web/wiki/StaticFileHandler

Il devrait être assez facile d'étendre l'autorisation d'inclure avant de servir le fichier.