Как управлять поддоменами на winhost с помощью пакетов URL Rewrite и ASP.NET Optimization

Я использую ASP.NET MVC4 с WinHost.

Точно так же, как вопрос, заданный здесь, я столкнулся с той же проблемой:

Я пробую WinHost, и у меня возникают проблемы с поддоменами. На WinHost у вас может быть несколько поддоменов на одну учетную запись хостинга, но каждый поддомен указывает на корневой веб-сайт. Например. у вас могут быть www.example.com, sub1.example.com и sub2.example.com, но все они отображают контент по адресу http://www.example.com/.

Другие хосты позволяют вам указывать субдомены на подпапку на вашем веб-сайте. Это позволит вам указать sub1.example.com на / sub1, sub2.example.com на / sub2 и www.example.com на /.

WinHost рекомендует использовать страницу asp / aspx для перенаправления http://sub1.example.com на http://sub1.example.com/sub1, который указывает на / sub1. Хотя это сработает, я бы хотел, чтобы субдомен в URL-адресе не отображался дважды.

Поэтому я попытался использовать IIS7 URL Rewrite, чтобы указать http://sub1.example.com на / sub1. Бен Пауэлл подробно описывает это на его блог.

Мне удалось заставить эту часть работать, так что http://sub1.example.com фактически указывает на мое виртуальное приложение "/ sub1" в IIS.

Если я использую Url.Content, он работает безупречно.

Теперь я использую оптимизацию ASP.NET и связываю сценарии и CSS. Проблема в том, что для этого абсолютно необходим относительный URL-адрес, то есть:

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.unobtrusive*",
                    "~/Scripts/jquery.validate*"));

Однако, поскольку это относительный URL-адрес, я получу в разметке следующее:

<script src="/sub1/bundles/jqueryval?v=UgyEMAYOuSB9Bb6HcOEVHpd6fIIp54yF086SRNVcdIY1"></script>

Конечно, из-за "sub1" файл не находит. Я подумал о перенаправлении URL-адресов, над которым мне никогда не приходилось работать. Может маршрут в MVC? Не знаю, как это сделать. Я также мог бы полностью отказаться от объединения, чтобы использовать "Url.Content", что, на мой взгляд, печально.

Как лучше всего решить эту проблему?




Ответы (1)


Я знаю, что вы можете использовать IBundleTransform для изменения содержимого в пакете в зависимости от уникальных обстоятельств. Вы можете изменить сам контекст пакета. Вот ссылка, MVC4 StyleBundle не разрешает изображения

person Ross Bush    schedule 08.04.2013
comment
Моя проблема действительно связана с функцией Script.Render (...), которая отображает виртуальный каталог. - person Nick-ACNB; 10.04.2013
comment
Вы сказали, что настроили некоторые правила перезаписи в iis. Интересно, можно ли выявить проблему с маршрутизацией также в коде запуска с помощью RouteConfig.RegisterRoutes (RouteTable.Routes)? - person Ross Bush; 11.04.2013