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?