2010-03-11 5 views
0

J'écris une classe qui hérite de IHttpHandler pour la combinaison de scripts et de css. Je veux seulement combiner si le Querystring a un paramètre spécial défini. Si ce paramètre n'est pas défini, je veux écrire le contenu du fichier comme si le gestionnaire n'était même pas impliqué. Quel est le meilleur moyen de délivrer le fichier intact?ihttphandler pour écrire le fichier exactement comme

EIDT:

Le seul problème que je rencontre est que j'ai une balise de script sur la page qui fait référence à un script dans un répertoire virtuel, mais la page que je suis sur est dans un sous-répertoire du application.

La page à partir de laquelle le script de contrôle est référencé se trouve à l'adresse webserver/Admin/Default.aspx. Lorsque j'accède à l'objet Request de la classe qui implémente IHttpHandler, toutes les propriétés du chemin de fichier sont les suivantes: webserver/Admin/~/SharedScripts/control.js. Comment résoudre ça?

Répondre

2

Vous pouvez vérifier le paramètre de chaîne de requête dans la méthode « ProcessRequest (HttpContext de contexte) » comme ceci:

context.Request.QueryString["paramertername"] 

Si vous voulez diffuser le fichier demandé est que vous pouvez faire ce qui suit:

 string physicalFilePath = context.Request.PhysicalPath; 
     string fileContent = string.Empty; 

     // Determine whether file exists 
     if (File.Exists(physicalFilePath)) 
     { 
      // Read content from file 
      using (StreamReader streamReader = File.OpenText(physicalFilePath)) 
      { 
       fileContent = streamReader.ReadToEnd(); 
      } 
     } 

     context.Response.Output.Write(convertedFile); 
     context.Response.Flush(); 

PS: Vous pouvez également consulter l'article du projet de code suivant pour un exemple plus complet: http://www.codeproject.com/KB/locale/LocalizedScriptsAndStyles.aspx

+0

le seul problème que je rencontre est que j'ai une balise de script sur e La page qui fait référence à un script dans un répertoire virtuel mais la page sur laquelle je suis est dans un sous-répertoire de l'application. La page que le script de commande est référencé à partir est situé à l'adresse http: //webserver/Admin/Default.aspx . Lorsque j'accède à l'objet Request dans la classe qui implémente IHttpHandler toutes les propriétés de chemin de fichier sont les suivantes: http: //webserver/Admin/~/SharedScripts/control.js. Comment résoudre ça? – Chris

Questions connexes