Asp.net MVC Bundle - 仅允许应用程序相对URL(〜/ url)

时间:2014-05-23 13:57:02

标签: asp.net asp.net-mvc asp.net-mvc-4 razor

我在包中添加脚本时遇到错误。有没有办法解决这个问题

  

URL“/Scripts/bootstrap.js?1.0.0.1”无效。只要   允许应用程序相对URL(〜/ url)。

我们正在使用CDN,所以url的创建方式就像'bootstrap.js?1.0.0.1'。我找到的文章很少,但没有解决问题。

2 个答案:

答案 0 :(得分:3)

您收到的错误是您的网址不是相对的。 URL“/Scripts/bootstrap.js?1.0.0.1”指的是实际网址http:////Scripts/bootstrap.js?1.0.0.1 - 这是一个静态网址

显然,这不是你想要实现的目标。您正试图获得http://yourdomain.com/Scripts/bootstrap.js?1.0.0.1的引用。

要实现这一点,您需要确保通过在您想要引用的资源的前面写下字符~来使其相对于您的域(因此是相对路径),因为这代表您的域。

因此写道:

~/Scripts/bootstrap.js?1.0.0.1

答案 1 :(得分:3)

您可以将MVC捆绑包与CDN一起使用。显然,与任何CDN一样,如果CDN不可用,您应该有一些后备计划(通常是本地副本)。 (我说从来没有真正打扰过,但仅仅因为我懒惰并不意味着你应该这样做!)

public static void RegisterBundles(BundleCollection bundles)
{

    bundles.UseCdn = true;   //enable CDN support

    //add link to bootstrap on the CDN
    var bootstrapCdnPath = "http://domain.to/bootstrap.cdn";

    bundles.Add(new ScriptBundle("~/bundles/bootstrap",
                bootstrapCdnPath));

}

请注意,即使在调试模式下,它也始终使用CDN。有关如何在调试时使用本地副本(例如,非缩小版)的详细信息,请参阅http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification(启动时或使用Google缓存)。