无法生成' VersionQueryString'在Scripts.Render中使用bundle

时间:2014-09-29 13:45:33

标签: c# asp.net-mvc bundle bundling-and-minification

这是我的设置:

public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/" + Links.Scripts.jquery_2_1_1_min_js,
                    "~/" + Links.Scripts.jquery_migrate_1_2_1_min_js,
                    "~/" + Links.Scripts.calendar.jquery_ui_datepicker_cc_all_min_js
                    ));
    }
    protected void Application_Start()
    {
        RegisterBundles(BundleTable.Bundles);
        BundleTable.EnableOptimizations = true;
    }

在布局视图中使用此代码:

@Scripts.Render("~/bundles/jquery")

在VS中没问题。 但是当发布我的项目并在IIS8.0中部署它无法生成 VersionQueryString 时,这是HTML输出:

<script src="/Test/bundles/jquery?v="></script>

但这是一个问题.Html输出必须是这样的:

<script src="/Test/bundles/jquery?v=D8YBlpJkSh-c2SxXkODfl3ftU01p3BTOtqGF3Uuuq9E1"></script>

什么原因导致无法生成VersionQueryString?

1 个答案:

答案 0 :(得分:0)

更改此行

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                "~/" + Links.Scripts.jquery_2_1_1_min_js,
                "~/" + Links.Scripts.jquery_migrate_1_2_1_min_js,
                "~/" + Links.Scripts.calendar.jquery_ui_datepicker_cc_all_min_js
                ));
}

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                VirtualPathUtility.ToAppRelative(Links.Scripts.jquery_2_1_1_min_js),
                VirtualPathUtility.ToAppRelative(Links.Scripts.jquery_migrate_1_2_1_min_js),
                VirtualPathUtility.ToAppRelative(Links.Scripts.calendar.jquery_ui_datepicker_cc_all_min_js)
                ));
}

<强> VirtualPathUtility.ToAppRelative : 使用System.Web.HttpRuntime.AppDomainAppVirtualPath属性中的应用程序虚拟路径将虚拟路径转换为与应用程序相关的路径。