对于每个控制器都有一个文件夹(具有相同名称的控制器),并为每个操作提供一个脚本文件。
为每个文件创建一个遵循模式的包:“〜/ Scripts / Controllers / {controller-name} / {filename-without-extension}”
bundles.IncludePerFile(new DirectoryInfo(server.MapPath("~/Scripts/Controllers")), "~/Scripts/Controllers/{0}/{1}",
(dir,file) => string.Format("~/Scripts/Controllers/{0}/{1}", dir, Path.GetFileNameWithoutExtension(file)), "*.js");
IncludePerFile
是我为执行此任务而创建的扩展方法
然后应该存在一个:~/Scripts/Controllers/processos/pasta
的捆绑!
并确认一下:
到目前为止正确!捆绑存在!
运行应用程序时,会出现以下错误:
如果我改变了这个:
@Scripts.Render("~/Scripts/Controllers/processos/pasta")
到此:
@Scripts.Render("~/Scripts/Controllers/processos/pasta.js")
未生成错误。但是文件没有缩小,因为实际上有一个捆绑。 (我已经放入了发布模式并发布了应用程序!)
Index was outside the bounds of the array.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.IndexOutOfRangeException: Index was outside the bounds of the array.
Source Error:
Line 3: @section js {
Line 4: @*@Scripts.Render("~/Scripts/Controllers/processos/Pasta.js", "~/Scripts/Controllers/processos/display.js")*@
Line 5: @Scripts.Render("~/Scripts/Controllers/processos/pasta")
Line 6: @Scripts.Render("~/Scripts/Controllers/processos/display.js")
Line 7:
Source File: w:\Clients\creditoimobiliariobb\sistema\src\CreditoImobiliarioBB\CreditoImobiliarioBB.Web\Views\processos\display.cshtml Line: 5
Stack Trace:
[IndexOutOfRangeException: Index was outside the bounds of the array.]
System.String.get_Chars(Int32 index) +0
Microsoft.Ajax.Utilities.CssParser.Append(Object obj, TokenType tokenType) +402
Microsoft.Ajax.Utilities.CssParser.AppendCurrent() +74
Microsoft.Ajax.Utilities.CssParser.SkipToClose() +744
Microsoft.Ajax.Utilities.CssParser.SkipToEndOfStatement() +232
Microsoft.Ajax.Utilities.CssParser.ParseRule() +574
Microsoft.Ajax.Utilities.CssParser.ParseStylesheet() +1235
Microsoft.Ajax.Utilities.CssParser.Parse(String source) +897
Microsoft.Ajax.Utilities.Minifier.MinifyStyleSheet(String source, CssSettings settings) +419
System.Web.Optimization.CssMinify.Process(BundleContext context, BundleResponse response) +302
System.Web.Optimization.Bundle.ApplyTransforms(BundleContext context, String bundleContent, IEnumerable`1 bundleFiles) +207
System.Web.Optimization.Bundle.GenerateBundleResponse(BundleContext context) +355
System.Web.Optimization.Bundle.GetBundleResponse(BundleContext context) +104
System.Web.Optimization.BundleResolver.GetBundleContents(String virtualPath) +254
System.Web.Optimization.AssetManager.EliminateDuplicatesAndResolveUrls(IEnumerable`1 refs) +435
System.Web.Optimization.AssetManager.DeterminePathsToRender(IEnumerable`1 assets) +1029
System.Web.Optimization.AssetManager.RenderExplicit(String tagFormat, String[] paths) +75
System.Web.Optimization.Scripts.RenderFormat(String tagFormat, String[] paths) +292
System.Web.Optimization.Scripts.Render(String[] paths) +51
答案 0 :(得分:32)
我在这个问题上遇到了同样的错误:StyleBundle Index was outside the bounds of the array
答案非常简单:您必须更新Microsoft Web Optimization
& WebGrease
个软件包(此时为1.1.2和1.6.0版本)
答案 1 :(得分:5)
我会验证你的所有元素
IncludePerFile(new DirectoryInfo(server.MapPath("~/Scripts/Controllers")), "~/Scripts/Controllers/{0}/{1}",
(dir,file) => string.Format("~/Scripts/Controllers/{0}/{1}", dir, Path.GetFileNameWithoutExtension(file)), "*.js")
正在将创建的捆绑包完全放入您认为的内容中。
在捆绑包中包含错误类型的文件时,我在运行时收到此错误。即
@Styles.Render("~/bundles/myStyleBundle");
实际上包含一个JavaScript文件。
答案 2 :(得分:5)
我遇到了同样的问题,当我尝试不同的检查时,我发现我的css文件中有一个选择器会导致问题:
.glyphicons-icon _: - o-prefocus , .glyphicons-icon { background-image:url(../ images / glyphicons.png); }
似乎Microsoft.Ajax.Utilities.CssParser与 _: css选择器有问题。我删除了该行,它正在工作。
答案 3 :(得分:0)
我遇到了类似的问题。我正在使用VS 2013和MVC 5并且正在更新到Bootstrap v3.0.1以便使用Bootswatch的主题。我使用最新的Bootstrap下载更新了所有内容,该网站似乎工作正常。然后我从Bootswatch网站抓取了Slate的CSS并在新的样式表中使用它,在StyleBundle中更改了它并构建了解决方案。当我运行它时,我得到了#34;索引超出了数组的范围"错误。切换回bootstrap.css,它工作正常。
然后我使用NuGet包管理器来更新我的所有包...我刚刚安装了VS 2013而尚未更新所有内容。重建解决方案和wallah,它很有效。所以我会投票更新你的包裹回答。
答案 4 :(得分:0)
您可能需要更新一些nuget库。尝试更新WebGrease