2008-11-14 76 views
0

在我们的设置中,IIS 7设置中有两个指向相同物理路径的不同网站。一个与结合HTTP:// websitename .domain.com/(虚拟根〜是/)常规域和安全域路径之间的Webresource.axd问题

和在https://webserver.domain.com/的userid第二/websitename所以虚拟根目录〜是/ userid/websitename)。我们使用第二个用于每个网站的安全方面。

这会导致加载用于生成的CSS的Webresources.axd文件和用于AJAX.net工具箱的JavaScript的问题。

有没有办法让这些生成的资源文件的路径被修改。或者以某种方式为每个应用程序设置虚拟根路径。

回答

3

我找到了一个解决方案,使用Render()方法将URL路径替换为正确的路径。此forum post有关于此解决方案的信息。我将不得不对其进行修改以检查Request.Url以查看页面请求来自哪个域。

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 
     { 
     } 
    } 
}