script net mvc bundleconfig asp and asp.net-mvc-4 asp.net-optimization

asp.net-mvc-4 - mvc - bundles asp net webforms



El índice estaba fuera de los límites de la matriz en @ Scripts.Render (5)

Verificaría que todos los elementos de su

IncludePerFile(new DirectoryInfo(server.MapPath("~/Scripts/Controllers")), "~/Scripts/Controllers/{0}/{1}", (dir,file) => string.Format("~/Scripts/Controllers/{0}/{1}", dir, Path.GetFileNameWithoutExtension(file)), "*.js")

están poniendo en los paquetes creados exactamente lo que crees que están poniendo.

Recibí este error en tiempo de ejecución cuando se incluye un tipo incorrecto de archivo dentro de un paquete. es decir

@Styles.Render("~/bundles/myStyleBundle");

en realidad contiene un archivo JavaScript.

Para cada controlador, tenga una carpeta (con el mismo controlador de nombre), y para cada acción, un archivo de script.

Para cada archivo está creando un paquete siguiendo el patrón: "~ / Scripts / Controllers / {nombre-controlador} / {nombre-archivo-sin-extensión}"

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 es un método de extensión que creé para realizar esta tarea

¡Entonces debería existir un paquete para: ~/Scripts/Controllers/processos/pasta !
Y para confirmar esto:

Hasta ahora, ¡correcto! ¡El paquete existe!

Ejecutando aplicación

Cuando ejecuto la aplicación, aparece el siguiente error:

Imagen completa

Incorrecta e ineficiente para reparar el error:

Si cambio esto:

@Scripts.Render("~/Scripts/Controllers/processos/pasta")

a esto:

@Scripts.Render("~/Scripts/Controllers/processos/pasta.js")

No se genera error Pero el archivo no se minimiza ya que efectivamente hay un paquete. (Ya he puesto en modo de lanzamiento y aplicación publicada!)

Error completo

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


Tuve el mismo problema y cuando probé con una comprobación diferente descubrí que hay un selector en mi archivo css como este que causa el problema:

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

parece que Microsoft.Ajax.Utilities.CssParser tiene un problema con el selector _: css. Eliminé la línea y está funcionando.


Me encontré con un problema similar. Estoy usando VS 2013 y MVC 5 y estaba actualizando a Bootstrap v3.0.1 para usar un tema de Bootswatch. Actualicé todo usando la última descarga de Bootstrap y el sitio parecía funcionar bien. Luego agarré el CSS para Slate desde el sitio de Bootswatch y lo usé en la nueva hoja de estilo, lo cambié en la solución StyleBundle y desarrollé. Cuando lo ejecuté, obtuve el error "El índice estaba fuera de los límites de la matriz". Regrese a bootstrap.css y funcionó bien.

Luego utilicé NuGet Package Manager para actualizar todos mis paquetes ... Acababa de instalar VS 2013 y aún no lo había actualizado todo. Reconstruí la solución y wallah, funciona genial. Entonces votaría por la actualización de sus paquetes.


Es posible que necesite actualizar algunas de sus bibliotecas nuget. Intenta actualizar WebGrease