Проект ASP.NET MVC: комплектация для CDN - PullRequest
0 голосов
/ 28 сентября 2018

У меня проблема с моим проектом MVC.Не удается получить CDN, работающий должным образом.Я сделал следующее: - предоставил CDN на веб-сайте Azure (https://mycoolcdn.azueedge.net) - обновлен файл BundleConfig.cs, чтобы он указывал на CDN; - обновлен файл web.config с адресом CDN и флагом UseCDN, поэтому BundleConfig выглядит так:как показано ниже:

public static class BundleConfig
{
    public static string HostingEnvironment = ConfigurationManager.AppSettings["HostingEnvironment"];

    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.UseCdn = Convert.ToBoolean(ConfigurationManager.AppSettings["CdnEnabled"]);

        if (HostingEnvironment == "DEV")
        {
            bundles.IgnoreList.Clear();

            bundles.Add(
                new StyleBundle(CreateVirtualPath("/Bundles/App/vendor/css"), CreateCdnPath("/Bundles/App/vendor/css"))
                    .Include("~/Scripts/toastr/toastr.min.css", new CssRewriteUrlTransform())
                    .Include("~/Scripts/sweetalert/dev/sweetalert.css", new CssRewriteUrlTransform())
                    .Include("~/Content/flags/famfamfam-flags.css", new CssRewriteUrlTransform())

                    .Include("~/Scripts/font-awesome/css/font-awesome.min.css", new CssRewriteUrlTransform())
                    .Include("~/Scripts/simple-line-icons/css/simple-line-icons.css", new CssRewriteUrlTransform())
                    .Include("~/Scripts/bootstrap/dist/css/bootstrap.min.css", new CssRewriteUrlTransform())
                    .Include("~/Scripts/bootstrap-switch/dist/css/bootstrap3/bootstrap-switch.min.css", new CssRewriteUrlTransform())
                    .Include("~/Scripts/bootstrap-table/src/bootstrap-table.css", new CssRewriteUrlTransform())
                    .Include("~/Scripts/angular-ui-grid/ui-grid.min.css", new CssRewriteUrlTransform())
                    .Include("~/Scripts/ng-sortable/dist/ng-sortable.css", new CssRewriteUrlTransform())

                    .Include("~/Content/assets/global/plugins/fullcalendar/fullcalendar/fullcalendar.css", new CssRewriteUrlTransform())
                    .Include("~/Content/assets/global/plugins/jqvmap/jqvmap/jqvmap.css", new CssRewriteUrlTransform())
                    .Include("~/Content/assets/global/css/plugins-md.min.css", new CssRewriteUrlTransform())
                    .Include("~/Content/assets/global/css/components.min.css", new CssRewriteUrlTransform())
                    .Include("~/Content/assets/global/css/components-md.css", new CssRewriteUrlTransform())
                    .Include("~/Content/assets/global/css/fonts.css", new CssRewriteUrlTransform())
                    .Include("~/Content/assets/layouts/layout4/css/layout.css", new CssRewriteUrlTransform())
                    .Include("~/Content/assets/layouts/layout4/css/themes/default.css", new CssRewriteUrlTransform())
                    .Include("~/Content/assets/layouts/layout4/css/custom.min.css", new CssRewriteUrlTransform())
                    .Include("~/Content/assets/global/plugins/jquery-nestable/jquery.nestable.css", new CssRewriteUrlTransform())
                    .Include("~/Content/assets/global/css/plugins.min.css", new CssRewriteUrlTransform())
                    .Include("~/Content/assets/global/css/plugins/owl-carousel/owl.carousel.css", new CssRewriteUrlTransform())
                    .Include("~/Content/assets/global/plugins/typeahead/typeahead.css", new CssRewriteUrlTransform())
                );

            bundles.Add(
                new StyleBundle(CreateVirtualPath("/Bundles/jquery"), CreateCdnPath("/Bundles/jquery"))
                    .Include(
                        "~/Scripts/jquery/dist/jquery.min.js"
                    ));
            BundleTable.EnableOptimizations = true;

        }
    //CDN methods implementation
    private static string CreateVirtualPath(string path)
    {
        return $"~{path}";
    }

    private static string CreateCdnPath(string path)
    {
        string CdnURL = ConfigurationManager.AppSettings["CdnURL"];
        return $"{CdnURL}{path}";
    }
}

Проблема двоякая. Несмотря на то, что для параметра debug установлено значение False и UseCDN = true, файлы на локальном хосте продолжают поступать с локального хоста.проверить решение локально? Вторая проблема, я не уверен, что ссылки на CDN верны. В моем случае приложение будет искать файлы в 'https://mycoolcdn.azueedge.net//Bundles/App/vendor/css', тогда как фактические значения различаются (в зависимости отресурс), как вы можете видеть из кода. Какой правильный подход здесь для больших пакетов со смешанными ссылками?

...