2008-11-14 9 views
0

Dans notre configuration, il existe deux sites Web différents dans IIS 7 qui pointent vers le même chemin physique. Un avec le http de liaison: // WebSiteName .domaine.com/(racine virtuelle ~ est /)Problème Webresource.axd entre les chemins de domaine normaux et sécurisés

et le second à https://webserver.domain.com/userid/WebSiteName (si la racine virtuelle ~ est/userid/websitename). Nous utilisons le second pour les aspects sécurisés de chaque site Web.

Cela provoque un problème avec le chargement des fichiers Webresources.axd pour les fichiers css générés et le javascript pour la boîte à outils AJAX.net.

Existe-t-il un moyen de modifier le chemin d'accès à ces fichiers de ressources générés. Ou en quelque sorte définir le chemin racine virtuel par application.

Répondre

3

J'ai trouvé une solution, en utilisant la méthode Render() pour remplacer les chemins d'URL par le bon. Ce forum post a des informations sur cette solution. Je vais devoir le modifier pour vérifier le Request.Url pour voir de quel domaine vient la requête de page.

protected override void Render(HtmlTextWriter writer) 
{ 
    try 
    {     
      StringBuilder renderedOutput = new StringBuilder();  
      StringWriter strWriter = new StringWriter(renderedOutput);  
      HtmlTextWriter tWriter = new HtmlTextWriter(strWriter);  
      base.Render(tWriter); 

      //this string is to be searched for src="/" mce_src="/" and replace it with correct src="./" mce_src="./". 

      string s = renderedOutput.ToString(); 
      s = Regex.Replace(s, "(?<=<img[^>]*)(src=\\\"/)", "src=\"./", RegexOptions.IgnoreCase); 
      s = Regex.Replace(s, "(?<=<script[^>]*)(src=\\\"/)", "src=\"./", RegexOptions.IgnoreCase); 
      s = Regex.Replace(s, "(?<=<a[^>]*)(href=\\\"/)", "href=\"./", RegexOptions.IgnoreCase); 

      writer.Write(s); 
     } 
     catch 
     { 
     } 
    } 
}