2008-11-14 77 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 
     { 
     } 
    } 
}