2009-02-24 8 views
0

J'ai un dossier «ressource» dans mon fichier de solution qui contient les fichiers xml. Il est disponible pour les utilisateurs Internet distants et non authentifiés et je voulais refuser l'accès à tous les utilisateurs. S'ils connaissent le nom du fichier, ils peuvent y accéder via url.Limiter les utilisateurs de l'ouverture du fichier XML à partir d'un dossier de projet, dot.net

par exemple: example.com/common/resources/test.xml

D'où je voulais refuser l'accès à ce dossier ou le déplacer vers un répertoire qui n'est pas servi en tant que contenu par le serveur Web. J'utilise visual studio 2003 et IIS. Quelqu'un peut-il m'aider à empêcher tous les utilisateurs de voir le fichier?

Répondre

0

Je pense que vous avez répondu à votre propre question - déplacez-le vers un répertoire qui n'est pas servi par IIS. Cela ressemble à la solution la plus simple, basée sur votre description.

Votre autre option consiste à activer l'authentification sur ce dossier.

0

Vous pouvez remplacer l'extension par .config pour une solution facile. IIS ne pas serveur de fichiers .config.

Je suis sûr que vous pouvez définir les autorisations de ce dossier pour autoriser uniquement l'accès ASP.Net.

0

Vous pouvez configurer IIS pour ne pas utiliser de fichiers XML. Mais cela bloquera tous les fichiers xml, pas seulement ceux de votre dossier de ressources.

Vous pouvez également ajouter un fichier web.config au dossier des ressources et définir l'accès afin qu'aucun utilisateur ne soit autorisé à télécharger des fichiers à partir de ce dossier. Quelque chose comme cela devrait fonctionner:

<authorization> 
    <deny users="*"/> 
</authorization> 
+0

J'ai essayé ur way. Mais toujours son ouverture du fichier xml sous le dossier de ressources le code est: \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t

+0

C'est étrange. Vous a ajouté les lignes à web.config dans le dossier racine de votre projet? Essayez d'ajouter un nouveau fichier web.config au dossier des ressources et insérez l'élément d'autorisation là –

+0

IIS sert probablement le fichier sans permettre au processus ASP.NET d'utiliser les paramètres web.config (peut être configuré pour faire autrement, ce qui n'est pas le cas). une solution optimale non plus). – muratgu

3

Si les fichiers ne sont utilisés que par votre code, vous pouvez changer le « Build action » de ces fichiers à « ressource incorporée ». Ensuite, lorsque vous déployez l'application, ces fichiers seront ajoutés en tant que ressources dans le fichier DLL lui-même, de sorte que vous ne les aurez plus sur le serveur Web. Pour y accéder, utilisez la méthode System.Reflection.Assembly.GetExecutingAssembly(). GetManifestResourceStream.

2

Le problème est que IIS, par défaut, servira XML et autre contenu statique sans même en parler à ASP.NET. Votre authentification dans ASP.NET est donc complètement ignorée.

Une solution consiste donc à forcer IIS à appeler ASP.NET pour gérer le contenu XML. De cette façon, vous pouvez tirer parti de l'authentification ASP.NET et utiliser le fichier web.config, comme indiqué dans ce sujet, pour contrôler l'accès.

Désolé que ces instructions sont pour IIS 5 et ASP.NET 2.0, mais j'imagine que vous pouvez travailler sur l'équivalent dans d'autres versions de IIS & ASP.NET. Dans IIS, sélectionnez Propriétés pour votre site Web, puis Configuration, puis Ajouter pour ajouter un nouveau mappage. Sélectionnez le chemin d'accès à aspnet_asapi.dll qui vit dans par exemple. Windows \ Microsoft.Net \ Framework \ v2.0.5072. Mettez .xml dans la zone Extension. Sélectionnez tous les verbes, et OK cela.

Espérons que ça aide.

5

Vous pouvez à la place stocker votre code XML dans le dossier App_Data car IIS refusera l'accès par défaut.

+0

Réponse parfaite (d'où le +1 de moi) c'est exactement le cas d'utilisation pour le dossier App_Data. – PaulJ

Questions connexes