访问不同ASP.Net MVC站点上的CDN包

时间:2018-01-10 02:18:51

标签: asp.net-mvc asp.net-mvc-5 bundle cdn

这是对此的后续问题:ASP.Net MVC 5 - Deploy separate CDN site with bundled JavaScipt and CSS

我想从第二个ASP.Net网站提供我的JavaScript和CSS包,所以我做了以下工作。

  1. 主要网站(没有JS或CSS资源的ASP.Net MVC网站)
  2. CDN网站(ASP.Net MVC网站,其中包含所有JS和CSS资源但不多)
  3. CDN网站Web.config提取

      <system.webServer>
        <httpProtocol>
          <customHeaders>
            <add name="Access-Control-Allow-Origin" value="*" />
          </customHeaders>
        </httpProtocol>
      </system.webServer>
    

    CDN网站捆绑配置

    public static class BundleConfig
    {
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
        }
    }
    

    主要网站捆绑配置

    public static class BundleConfig
    {
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new StyleBundle("~/Content/css", "http://[CDN website]/Content/css"));
            //BundleTable.EnableOptimizations = true;
        }
    }
    

    主要网站布局视图

    <!DOCTYPE html>
    <html>
    <head>
        @Styles.Render("~/Content/css")
    </head>
    <body>
        @RenderBody()
    </body>
    </html>
    

    结果

    主网站制作的HTML不会为CSS呈现<link>标记。但是,如果我启用了捆绑优化(请参阅主网站捆绑配置中的注释掉的代码),则会出现<link>标记,但看起来像这样:

    <link href="/Content/css?v=" rel="stylesheet">
    

    在浏览器中导航到 http://[CDN网站] / Content / css 会加载相应的CSS。

    在浏览器中导航到 http://[Main网站] / Content / css 会加载一个空白页面。

    我做错了吗?我不想直接引用CDN网站的URL,因为我想要MVC捆绑器附带的版本控制。

1 个答案:

答案 0 :(得分:0)

我最终在CDN网站上使用了以下解决方案。

https://stackoverflow.com/a/26402383/2663033

然后,主网站使用CDN网站的相应MVC路线作为样式&#34; href&#34;和脚本&#34; src&#34;,重定向到适当版本化的内容或脚本包。