无法加载资源:403禁止使用.js优化

我正在尝试缩小我的.js和.css文件。

我已经安装了打包的Install-Package Microsoft.AspNet.Web.Optimization

什么时候我用BundleTable.EnableOptimizations = true;激活优化BundleTable.EnableOptimizations = true;

我在客户端收到此错误:

无法加载资源:服务器响应状态为403(禁止) http://localhost:22773/Content/themes/elevation/v=gnDLBbf1VVRuQDXtIYn1q0P3ICZG7oiwwgxPRbaLvqI1

任何人都知道我做错了什么?

— BundleConfig info ——————————-

  public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { BundleTable.EnableOptimizations = true; bundles.Add(new ScriptBundle("~/bundles/myJquery").Include( "~/Scripts/jquery-1.9.1.js", "~/Scripts/jquery-ui-1.10.1.custom.js", "~/Scripts/jquery.signalR-1.0.1.js", "~/Scripts/signalr-hubs.js", "~/Scripts/Controls/Select/Simple/jquery.ui.selectmenu.js" )); bundles.Add(new ScriptBundle("~/bundles/shared").Include( "~/Scripts/global/prototypes.js", "~/Scripts/global/mathutil.js", "~/Scripts/global/elevationevents.js" )); bundles.Add(new ScriptBundle("~/bundles/core").Include( "~/Scripts/elevation/core/sys.config.js", "~/Scripts/elevation/core/bays.js", "~/Scripts/elevation/core/door.js", "~/Scripts/elevation/core/horiziontal.js", "~/Scripts/elevation/core/vertical.js")); bundles.Add(new StyleBundle("~/Content/themes/elevation").Include( "~/Content/themes/dialogs/dialogs.css", "~/Content/themes/social/ac/acSocial.css", "~/Content/themes/elevation/elevation.css" )); } } 

—————————–我还没有想到这个————- ——–

我在windows7操作系统上使用2013 .net和iis8

这是我最新的错误,我无法将我的解决方案从调试模式中解脱出来,因​​为如果我这样做,我会在下面得到该错误。

  HTTP Error 403.14 - Forbidden The Web server is configured to not list the contents of this directory. Most likely causes: A default document is not configured for the requested URL, and directory browsing is not enabled on the server. Things you can try: If you do not want to enable directory browsing, ensure that a default document is configured and that the file exists. Enable directory browsing. Go to the IIS Express install directory. Run appcmd set config /section:system.webServer/directoryBrowse /enabled:true to enable directory browsing at the server level. Run appcmd set config ["SITE_NAME"] /section:system.webServer/directoryBrowse /enabled:true to enable directory browsing at the site level. Verify that the configuration/system.webServer/directoryBrowse@enabled attribute is set to true in the site or application configuration file. Detailed Error Information: Module DirectoryListingModule Notification ExecuteRequestHandler Handler StaticFile Error Code 0x00000000 Requested URL http://localhost:1499/Content/themes/elevation/?v=aukmuLTC3g_fDko3eWmzqq7A8miRqgsJKXA2GO3w-pg1 Physical Path c:\users\administrator\documents\visual studio 2013\Projects\AlumCloud\AlumCloud\Content\themes\elevation\ Logon Method Anonymous Logon User Anonymous Request Tracing Directory C:\Users\Administrator\Documents\IISExpress\TraceLogFiles\ALUMCLOUD(3) More Information: This error occurs when a document is not specified in the URL, no default document is specified for the Web site or application, and directory listing is not enabled for the Web site or application. This setting may be disabled on purpose to secure the contents of the server. View more information » 

这是iis8在不处于产生错误的调试模式时创建的url

 http://localhost:1499/Content/themes/elevation/?v=aukmuLTC3g_fDko3eWmzqq7A8miRqgsJKXA2GO3w-pg1 

这是返回实际的.css文件而没有任何错误的url

 http://localhost:1499/Content/themes/elevation/elevation.css 

刚刚遇到同样的问题。 就我而言,解决方案是为Content bundle提供不同的名称。 我认为这是因为IIS拦截请求并将包名称视为目录,并且由于Content文件夹确实存在,因此它返回禁止的错误。 所以,你可以重命名~/Content/themes/elevation来说~/css/themes/elevation

 bundles.Add(new StyleBundle("~/css/themes/elevation").Include( "~/Content/themes/dialogs/dialogs.css", "~/Content/themes/social/ac/acSocial.css", "~/Content/themes/elevation/elevation.css" )); 

另外,不要忘记调整标记/母版页以使用修改后的软件包名称,即

 <%: Styles.Render("~/css/themes/elevation") %> 

然后将位置指令添加到web.config以允许访问包:

               

希望这可以帮助。

您必须使捆绑名称与资源的实际路径类似。 使用debug='false'BundleTable.EnableOptimizations = true;编译时,系统无法找到资源BundleTable.EnableOptimizations = true; 。 因为系统使用包名称来生成资源的链接。 所以你的包名应该是这样的 –

 bundles.Add(new ScriptBundle("~/Scripts/myJquery").Include( "~/Scripts/jquery-1.9.1.js", "~/Scripts/jquery-ui-1.10.1.custom.js", "~/Scripts/jquery.signalR-1.0.1.js", "~/Scripts/signalr-hubs.js", "~/Scripts/Controls/Select/Simple/jquery.ui.selectmenu.js" )); bundles.Add(new ScriptBundle("~/Scripts/global/shared").Include( "~/Scripts/global/prototypes.js", "~/Scripts/global/mathutil.js", "~/Scripts/global/elevationevents.js" )); bundles.Add(new ScriptBundle("~/Scripts/elevation/core/core").Include( "~/Scripts/elevation/core/sys.config.js", "~/Scripts/elevation/core/bays.js", "~/Scripts/elevation/core/door.js", "~/Scripts/elevation/core/horiziontal.js", "~/Scripts/elevation/core/vertical.js" )); bundles.Add(new StyleBundle("~/Content/themes/dialogs/dialog").Include( "~/Content/themes/dialogs/dialogs.css" )); bundles.Add(new StyleBundle("~/Content/themes/social/ac/ac").Include( "~/Content/themes/social/ac/acSocial.css" )); 

编辑这将适用于IIS 6.但是对于IIS 7或7.5,解决方案是另外的。 我在IIS 7.5中部署应用程序时遇到了同样的问题。 解决方案是在IIS 7.5上的ASP.NET MVC 4中讨论安装修补程序,返回404.与无扩展路由映射和ASP.NET 4.5 MVC 4无关的操作在Windows Server 2008上运行IIS 7

你确定必须是/ elev / v = gn …但不是/ themes / elevation吗?v = gnDLBbf(带 )?

如接受的答案中所述,您指定的包名称与实际的现有文件夹冲突。 例如,请考虑以下事项:

 bundles.Add(new StyleBundle("~/content/epic").Include( "~/Content/Epic/StickyFooter.css")); 

会给我OP指出的相同类型的错误:

 {myURL}/content/epic/?v=YTZL7Up6r-0uQblkv6unjKN5Nfb3uwtE0bPz9nxbjDc1 Failed to load 

这是因为优化器尝试创建的虚拟路径(内容/史诗)恰好是我站点中的现有文件夹路径(我在根目录中有一个名为“content”的文件夹,它包含一个名为“epic”的文件夹) 。 如果我将捆绑路径更改为以下内容:

 bundles.Add(new StyleBundle("~/content/epic2").Include( "~/Content/Epic/StickyFooter.css")); 

问题不再存在,因为我的“content”文件夹中没有名为“epic2”的文件夹。

与接受的答案相反,我建议不要将捆绑目录(例如“〜/ Content / a / b /”)更改为“〜/ css / a / b”,因为如果样式表包含相对引用,则会出现另一个潜在问题到外部文件。

考虑我的AjaxLoadAnimation.css样式表,其中包含以下代码段:

 ... background: rgba( 255, 255, 255, .5 ) url('images/spin.gif') 50% 50% no-repeat; ... 

为了确保引用适用于优化和非优化编译,请确保捆绑包的路径与捆绑中每个项目的路径匹配。 如果您的样式表位于〜/ Content / my / path,那么您的包应该以〜/ Content / my / path开头。 为了避免OP的问题,只需确保名称(在我的情况下为“sharedcss”)不与现有文件夹冲突。

 bundles.Add(new StyleBundle("~/Content/my/path/sharedcss").Include( "~/Content/my/path/bootstrap.css", "~/Content/my/path/font-awesome.css", "~/Content/my/path/AjaxLoadAnimation.css")); 

希望这可以使其他人免于同样的挫折。