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:
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
He tenido el mismo error en esta pregunta: el índice de StyleBundle estaba fuera de los límites de la matriz
Y la respuesta es bastante simple: tienes que actualizar tus paquetes Microsoft Web Optimization
& WebGrease
(en este momento las versiones 1.1.2 y 1.6.0)