Проблема Webresource.axd между обычными и безопасными путями к доменам - PullRequest
0 голосов
/ 14 ноября 2008

В нашей настройке есть два разных сайта в настройке IIS 7, которые указывают на один и тот же физический путь. Один с привязкой http://websitename.domain.com/ (виртуальный корень ~ is /)

и второе значение в https://webserver.domain.com/userid/websitename (, поэтому виртуальный корень ~ равен / userid / websitename) . Мы используем второй для безопасности аспектов каждого веб-сайта.

Это вызывает проблему с загрузкой файлов Webresources.axd для сгенерированного css и javascript для инструментария AJAX.net.

Есть ли способ изменить путь к этим сгенерированным файлам ресурсов? Или как-то установить виртуальный корневой путь для приложения.

1 Ответ

3 голосов
/ 14 ноября 2008

Я нашел одно решение, используя метод 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
      {
      }
  }
}
...