2015-06-25 67 views
3

我正尝试加入一些CDN能够捆绑与ASP.NET MVC 4的目的是通过在同一个数据中心ASP.NET MVC多个virtualpath捆绑与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")); 

可惜的是,这是不可能的,因为virtualPaths必须是相对于 (仅应用相对URL(〜/ URL)被允许)

然后从来就试过这样:

 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

感谢科林! “合并”选项会起作用,但这不是理想的解决方案。我试图找出一些其他方式来主持remotelly这多个脚本和System.Optimization(或其他包) – MarcosRP