renderizado recursos que minificar los elimina bloqueen archivos c# asp.net asp.net-mvc asp.net-optimization bundling-and-minification

c# - recursos - minificar css



¿Cómo deshabilitar temporalmente la agrupación y minificación en tiempo de ejecución? (1)

Extendiendo lo que mencioné en un comentario:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public class OptimizationsDebuggingAttribute : ActionFilterAttribute { private const String PARAM_NAME = "DisableOptimizations"; private const String COOKIE_NAME = "MySite.DisableOptimizations"; public override void OnActionExecuting(ActionExecutingContext filterContext) { Boolean parsedPref; Boolean optimizationsDisabled = false; if (filterContext.HttpContext.Request.QueryString[PARAM_NAME] != null) { // incoming change request var pref = filterContext.HttpContext.Request.QueryString[PARAM_NAME].ToString(); if (Boolean.TryParse(pref, out parsedPref)) { optimizationsDisabled = parsedPref; } } else { // use existing settings var cookie = filterContext.HttpContext.Request.Cookies[COOKIE_NAME]; if (cookie != null && Boolean.TryParse(cookie.Value, out parsedPref)) { optimizationsDisabled = parsedPref; } } // make the change System.Web.Optimization.BundleTable.EnableOptimizations = !optimizationsDisabled; // save for future requests HttpCookie savedPref = new HttpCookie(COOKIE_NAME, optimizationsDisabled.ToString()) { Expires = DateTime.Now.AddDays(1) }; filterContext.HttpContext.Response.SetCookie(savedPref); base.OnActionExecuting(filterContext); } }

Luego, por supuesto, implementarlo se ve algo como:

public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); filters.Add(new OptimizationsDebuggingAttribute()); }

O, si prefieres el enfoque práctico:

[OptimizationsDebugging] public ActionResult TroublesomeAction() { return View(); }

Necesito poder deshabilitar temporalmente la agrupación y la minimización para una sola solicitud con el fin de depurar problemas de JavaScript y CSS. Me gustaría hacer esto en tiempo de ejecución agregando un parámetro a QueryString así.

http://domain.com/page?DisableOptimizations=true

Aquí está el enfoque que estoy considerando.

protected void Application_BeginRequest(object sender, EventArgs e) { // Enable for every request BundleTable.EnableOptimizations = true; // Disable for requests that explicitly request it bool disable; bool.TryParse(Context.Request.QueryString["DisableOptimizations"], out disable); if (disable) { BundleTable.EnableOptimizations = false; } }

  • ¿Hay algún problema potencial con el hecho de que estoy configurando esta propiedad estática en cada solicitud web? (La aplicación web se ejecutará en una granja de servidores web)
  • ¿Hay mejores maneras de manejar esto?