0

在我们的设置中,IIS 7 设置中有两个不同的网站指向相同的物理路径。一个绑定http://websitename.domain.com/ (虚拟根~是/

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

这会导致为生成的 css 加载 Webresources.axd 文件以及为 AJAX.net 工具包加载 javascript 时出现问题。

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

4

1 回答 1

3

我找到了一种解决方案,使用 Render() 方法将 url 路径替换为正确的路径。此论坛帖子包含有关此解决方案的信息。我必须修改它以检查 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
      {
      }
  }
}
于 2008-11-14T18:46:29.597 回答