Asp.net mvc 5 使用CDN和integrity属性绑定JS文件

Asp.net mvc 5 使用CDN和integrity属性绑定JS文件,asp.net-mvc-5,bundle,cdn,Asp.net Mvc 5,Bundle,Cdn,在ASP.NET MVC 5中,是否可以使用bundleCollection.UseCdn并使用HTML完整性属性进行渲染?例如,有没有办法做到这一点: bundles.UseCdn = true; bundles.Add( new ScriptBundle("~/bundles/jquery", "https://code.jquery.com/jquery-3.1.1.min.js") .Include("~/Scripts/js/jquery/jquery-3.1.

在ASP.NET MVC 5中,是否可以使用
bundleCollection.UseCdn
并使用HTML完整性属性进行渲染?例如,有没有办法做到这一点:

bundles.UseCdn = true;
bundles.Add(
    new ScriptBundle("~/bundles/jquery", "https://code.jquery.com/jquery-3.1.1.min.js")
        .Include("~/Scripts/js/jquery/jquery-3.1.1.min.js")
);
渲染成这样

<script
  src="https://code.jquery.com/jquery-3.1.1.min.js"
  integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
  crossorigin="anonymous"></script>

部分答案

要添加crossorigin=“anonymous”属性,可以使用@Scripts.RenderFormat

@Scripts.RenderFormat(“,“~/bundles/jquery”)

您还可以在RenderFormat中包含integrity=“sha256-HVVNYAIADTO2PZUGMULJR8BLUSJGIZSDYGMIJLV2B8=”部分,但这看起来不是一个好的解决方案

当CDN失败时,我在ASP.NET MVC 5项目中尝试了这种方法

@Scripts.RenderFormat("<script src='{0}' integrity='sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa' crossorigin='anonymous'></script>", "~/bundles/bootstrapJS")
@Scripts.RenderFormat(“,“~/bundles/bootstrapJS”)
这将生成(开发人员工具内部)


从答案中我们发现,若脚本无法从CDN加载,那个么就存在错误

因此,我们在标记中手动添加脚本

<html>
<head>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
   <script>(window.jQuery) || document.write('<script src="/Scripts/jquery-1.12.4.min.js"><\/script>');</script>
</head>
<body></body>
</html>

(window.jQuery)| document.write(“”);
您可以像

 <script src='@Scripts.Url("~/bundles/jquery")' crossorigin="anonymous" integrity="value"> </script>

您找到解决方案了吗?我也面临同样的问题。
<html>
<head>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
   <script>(window.jQuery) || document.write('<script src="/Scripts/jquery-1.12.4.min.js"><\/script>');</script>
</head>
<body></body>
</html>
 <script src='@Scripts.Url("~/bundles/jquery")' crossorigin="anonymous" integrity="value"> </script>