gpt4 book ai didi

c# - 如何在运行时暂时禁用捆绑和缩小?

转载 作者:IT王子 更新时间:2023-10-29 04:44:43 25 4
gpt4 key购买 nike

为了调试 JavaScript 和 CSS 问题,我需要能够暂时禁用单个请求的捆绑和缩小。我想在运行时通过向 QueryString 添加一个参数来做到这一点......

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

这是我正在考虑的方法。

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;
}
}
  • 我在每个 Web 请求上设置此静态属性是否存在任何潜在问题? (网络应用程序将在网络场上运行)
  • 有没有更好的方法来处理这个问题?

最佳答案

扩展我在评论中提到的内容:

[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);
}
}

然后当然实现它看起来像:

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

或者,如果您更喜欢动手操作:

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

关于c# - 如何在运行时暂时禁用捆绑和缩小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14265806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com