索引超出了@ Scripts.Render中数组的范围

rid*_*nsb 13 asp.net-mvc-4 asp.net-optimization

对于每个控制器都有一个文件夹(具有相同名称的控制器),并为每个操作一个脚本文件.

文件夹结构

对于每个文件,都按照模式创建一个包:"〜/ 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");
Run Code Online (Sandbox Code Playgroud)

IncludePerFile 是我为执行此任务而创建的扩展方法

然后一个捆绑:~/Scripts/Controllers/processos/pasta应该存在!
并确认这一点:

捆绑存在

到目前为止如此正确!捆绑存在!

运行应用程序

当我运行该应用程序时,会发生以下错误:

捆绑错误

完整图像

修复错误的错误和低效:

如果我改变了这个:

@Scripts.Render("~/Scripts/Controllers/processos/pasta")
Run Code Online (Sandbox Code Playgroud)

对此:

@Scripts.Render("~/Scripts/Controllers/processos/pasta.js")
Run Code Online (Sandbox Code Playgroud)

没有生成错误.但是文件没有缩小,因为实际上有一个捆绑.(我已经放入了发布模式并发布了应用程序!)

完全错误

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
Run Code Online (Sandbox Code Playgroud)

FSo*_*ou1 32

我在这个问题上遇到了同样的错误:StyleBundle Index超出了数组的范围

答案很简单:你必须更新你的Microsoft Web Optimization&WebGrease包(此时1.1.2和1.6.0版本)


Gil*_*rts 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") 
Run Code Online (Sandbox Code Playgroud)

正在将创建的捆绑包完全放入您认为他们所投入的内容中.

在捆绑包中包含错误类型的文件时,我在运行时收到此错误.即

@Styles.Render("~/bundles/myStyleBundle");
Run Code Online (Sandbox Code Playgroud)

实际上包含一个JavaScript文件.


Mas*_*aei 5

我遇到了同样的问题,当我尝试不同的检查时,我发现我的css文件中有一个选择器会导致问题:

.glyphicons-icon _: - o- prefocus,.glyphicons-icon {background-image:url(../ images/glyphicons.png); }

似乎Microsoft.Ajax.Utilities.CssParser与_: css选择器有问题.我删除了线路,它正在工作.