Répondre

2

Ceci est à cause du script cartes pour ASP.NET. Seules certaines extensions sont mappées dans ASP.NET. Le reste est géré directement par IIS. C'est par conception, pour des raisons de performance.

Il y a deux façons de gérer cela.

  1. Dupliquer vos règles d'autorisation dans les fichiers web.config dans ACLs de fichiers NTFS (qui est, définir des autorisations sur des dossiers et des fichiers directement). Assurez-vous que le schéma d'authentification de l'utilisateur correspond aux comptes et groupes utilisés pour contrôler l'accès ... en d'autres termes, si vous utilisez SQL pour stocker les jetons de nom d'utilisateur, cela ne fonctionnera pas, car ces jetons ne seront pas forcément mappés utilisateurs de domaine et groupes/rôles.

  2. Créez un IHttpHandler pour gérer vos fichiers nonASP.NET. À partir de la méthode ProcessRequest, appelez la méthode Server.MapPath(url) sur l'URL entrante, puis diffusez le fichier en utilisant Response.WriteFile(filename). Vous devrez probablement définir la propriété ContentType en premier. Et, (voici les mauvaises nouvelles), vous devrez peut-être encore effectuer un contrôle d'accès déclaratif ou impératif - juste avoir les entrées dans les fichiers web.config peuvent ne pas fonctionner. Voir Custom ASP.NET Processing with HTTP pour plus d'informations sur l'écriture de votre propre gestionnaire. C'est probablement une bonne idée de créer des gestionnaires distincts pour chaque type de contenu. Une fois que vous en avez écrit un, vous verrez à quel point ils sont faciles à faire.

Vous pouvez essayer (ont pas essayé moi-même) pour ajouter <httpHandlers> éléments aux fichiers web.config où vous avez <autorisation> éléments supplémentaires - utiliser l'élément <retirer> pour enlever la HttpHandler hérité et en ajouter un autre au niveau du sous-dossier (peut-être pointant vers la même classe?). Je ne suis pas sûr que cela fonctionnera, mais ça vaut le coup d'essayer. Enfin, si vous ne voulez vraiment pas passer à travers et faire tout ce travail, vous pouvez simplement ajouter plus de mappages d'extension dans les services Internet (IIS). Par exemple, jetez un oeil à How to: Register HTTP Handlers, vous pouvez ajouter un mappage pour les fichiers .jpg à aspnet_isapi.dll (jetez un oeil aux mappages existants pour .aspx et ainsi de suite). Vous n'avez pas besoin d'ajouter un élément de HttpHandler à votre web.config, parce que le niveau de la machine web.config contient déjà cette entrée:

<add path="*" verb="GET,HEAD,POST" type="System.Web.DefaultHttpHandler" validate="true"/> 

S'il vous plaît noter que cela peut avoir de très graves problèmes de performances sur votre site.

+0

Je vais relire le chapitre sur HttpHandlers et essayer puis essayer. J'apprécie vraiment votre aide – SourceC

Questions connexes