2010-03-16 6 views
2

J'ai quelques fichiers xml dans mon application web asp.net que je ne veux pas que quiconque puisse accéder autre que mon code côté serveur. c'est ce que je l'ai essayé ..Les gestionnaires http ne fonctionnent pas sur le serveur web mais fonctionnent sur localhost

<add verb="*" path="*.xml" type="System.Web.HttpForbiddenHandler" /> 

i a écrit ceci à l'intérieur des <httpHandlers>

il fonctionne bien sur le localhost, mais pas sur le serveur ... le serveur sans aucune hésitation affiche le code XML fichier ... Je ne sais pas comment procéder ...

merci à l'avance .. :)

Mise à jour: le serveur a II S6, Windows Server 2003

Répondre

2

Vous devriez vérifier ce que les autres gestionnaires sont actifs sur le serveur et peut affecter les .xml fichiers, y compris les génériques comme <add verb="*" path="*" ...

Aussi, vérifiez la configuration du serveur comme indiqué ici: httpHandlers Element (ASP.NET Settings Schema)

Microsoft Internet Information Services (IIS) a son propre modèle pour mapper les extensions aux ISAPI. Pour que le mappage entre une extension d'application donnée et son gestionnaire prenne effet, l'extension doit être mappée dans IIS vers ISAPI ASP.NET. Pour les extensions non standard, telles que les extensions personnalisées, vous devez configurer IIS en conséquence.

MISE À JOUR:Protecting Files with ASP.NET

+0

J'ai vérifié très bien et il n'y a rien de collision avec mon gestionnaire spécifique – ZX12R

+1

@ ZX12R: avez-vous vraiment vérifié que les fichiers xml sont mappés à l'extension ASP.NET ISAPI sur le serveur? – alexandrul

+0

pouvez-vous s'il vous plaît dites-moi comment faire une vérification approfondie des mappings.? – ZX12R

2

Vous pouvez les placer dans le répertoire spécial App_Data. Les fichiers dans ce dossier ne sont pas servis.

+0

Je ne pense pas que ce soit la solution parfaite. Cela fonctionnera, mais c'est juste une solution de contournement. – ZX12R

+0

+1 pour cette réponse; Ce n'est pas une solution de contournement, c'est l'utilisation parfaite de App_Data – bgs264

0

Qu'en est-il en utilisant la balise <location>?

<configuration> 
    <location path="something.xml"> 
     <system.web> 
     <authorization> 
      <deny users="*"/> 
     </authorization> 
     </system.web> 
    </location> 
</configuration> 
+0

Je ne pense pas comprendre complètement, si la balise doit être placée dans la racine de configuration.? Je pensais qu'un seul élément est autorisé par fichier de configuration. moi et expliquer .. – ZX12R

+0

Oui, en fait, je suggérais d'utiliser l'étiquette de localisation comme mentionné dans votre web.config et de souligner le chemin de XML. Ensuite, dans votre balise auth, spécifiez deny users = *. Je n'ai pas vérifié, mais j'espère que cela devrait fonctionner –

+0

cela fonctionne dans localhost mais échoue dans le serveur .. !! – ZX12R

1

IIS 6 & Visual Studio construit dans les choses de registre du serveur Web un peu différemment que IIS 7. Si votre hôte est en cours d'exécution IIS 7, vous devrez peut-être ajouter votre inscription au nœud <system.WebServer> dans votre web.config fichier.

<system.webServer> 
    <handlers> 
    <add ... /> 
    </handlers> 
</system.webServer> 
+0

ont mis à jour ma question ... le serveur utilise IIS6 .. – ZX12R

+0

Si tel est le cas, la réponse de @ alexandrul est probablement correcte. IIS gère directement toutes les demandes de documents, sauf si elles sont mappées à un autre gestionnaire. De nombreux fournisseurs d'hébergement offrent un panneau de contrôle où vous pouvez mapper des extensions de fichiers à des gestionnaires spécifiques. –

0

i également fait face à la question similaire. Dans mon localhost, les opérations crud fonctionnent bien et affichent les données sur la grille mais ne fonctionnent pas sur l'URL hébergée dans la machine virtuelle qui se comporte bizarrement, cause: J'appelais les gestionnaires les uns après les autres comme, après avoir enregistré dans le rappel je appelait à nouveau un gestionnaire de plus pour afficher les données dans la grille dans ces deux appels enregistrer se passe correctement, mais le gestionnaire d'affichage ne frappait pas seulement dans violoneux. Sol: Donc, j'ai essayé d'envoyer des données dans le format sérialiser dans le rappel de sauvegarder pour afficher, cela a résolu mon problème est juste une solution rapide ne sais pas pourquoi exactement son ne fonctionne pas.

Idéalement, plusieurs appels au gestionnaire devraient fonctionner, mais si vous appelez plusieurs gestionnaires l'un après l'autre, cela peut se produire de la sorte, plutôt que d'essayer d'entrer des données en un seul appel, cela peut vous aider à résoudre le problème. problème.

Questions connexes