2015-06-25 4 views
3

я пытаюсь добавить CDN, способный сверток с ASP.NET MVC 4. Цель состоит в том, чтобы делиться контентом локально многими другими сайтами, размещенными в одном центре обработки данныхASP.NET MVC множественным виртуальный_путь Bundle с CDN

Первая попытка была:

  bundles.Add(new ScriptBundle("~/bundles/jquery", "http://mysite/Content/js/").Include(
                   "http://mycdnsite/Content/js/jquery.unobtrusive-ajax.min.js", 
                   "http://mycdnsite/Content/js/jquery-migrate-1.2.1.js", 
                   "http://mycdnsite/Content/js/jquery-{version}.js")); 

Unfortunatelly, это не представляется возможным, так как virtualPaths должен быть относительным (только применение относительных URL-адресов (~/URL) допускается)

Тогда I've попытался это:

 bundles.Add(new ScriptBundle("~/bundles/jquery", "http://mycdnsite/Content/js/").Include(
                   "~/jquery.unobtrusive-ajax.min.js", 
                   "~/jquery-migrate-1.2.1.js", 
                   "~/jquery-{version}.js")); 

Но он не работал, даже позволяя CDN:

BundleTable.EnableOptimizations = true; 
bundles.UseCdn = true; 

Можно ли создать несколько контента сверток с CDN?

ответ

0
public static void RegisterBundles(BundleCollection bundles) 
{ 
     bundles.UseCdn = true; //enable CDN  
    // How To add link to jquery on the CDN 
    var jquryCdnPath = "http://mycdnsite/Content/js/jquery.unobtrusive-ajax.min.js"; 

    bundles.Add(new ScriptBundle("~/bundles/jquery", 
       jquryCdnPath).Include(
       "~/Scripts/jquery-{version}.js")); 

    } 
+0

Это прекрасно работает, когда я добавляю один виртуальный путь. То, что я пытаюсь сделать, это map ~/bundles/jquery для многих виртуальных путей ... – MarcosRP

1

AFAIK вы не можете обслуживать несколько хостов CDN в одном комплекте. ScriptBundle позволяет указать альтернативный URL-адрес для пакета, а пакет может содержать несколько локальных файлов. Синтаксис у вас правильный.

bundles.UseCdn = true; 
bundles.Add(new ScriptBundle("~/bundles/jquery", 
    @"//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.2.js" 
    ).Include(
    "~/Scripts/jquery-{version}.js")); 

Существует несколько способов решения этой проблемы.

  1. Имейте один комплект для сценария, размещенного на CDN.
  2. Вручную создайте пакет файлов и загрузите их в свой собственный CDN и укажите это.
+0

Спасибо Colin! Опция «merge» будет готова, но это не идеальное решение. Я пытаюсь выяснить другой способ удаленного размещения этих нескольких сценариев и ссылки с помощью System.Optimization (или другого пакета) – MarcosRP