Отключение пакетирования и минификации (WEBFORMS)
Я создал новый сайт asp.net для тестирования этой функции. Теперь я хочу иметь возможность динамически контролировать возможность переключения / минимизации во время выполнения. Большая часть кода была сгенерирована самостоятельно, как показано ниже, за исключением строки для отключения оптимизации.
public static void RegisterBundles(BundleCollection bundles)
{
// I ADDED THIS LINE ONLY TO TURN OFF OPTIMIZATION.
System.Web.Optimization.BundleTable.EnableOptimizations = false;
bundles.Add(new ScriptBundle("~/bundles/WebFormsJs").Include(
"~/Scripts/WebForms/WebForms.js",
"~/Scripts/WebForms/WebUIValidation.js",
"~/Scripts/WebForms/MenuStandards.js",
"~/Scripts/WebForms/Focus.js",
"~/Scripts/WebForms/GridView.js",
"~/Scripts/WebForms/DetailsView.js",
"~/Scripts/WebForms/TreeView.js",
"~/Scripts/WebForms/WebParts.js"));
// Order is very important for these files to work, they have explicit dependencies
bundles.Add(new ScriptBundle("~/bundles/MsAjaxJs").Include(
"~/Scripts/WebForms/MsAjax/MicrosoftAjax.js",
"~/Scripts/WebForms/MsAjax/MicrosoftAjaxApplicationServices.js",
"~/Scripts/WebForms/MsAjax/MicrosoftAjaxTimer.js",
"~/Scripts/WebForms/MsAjax/MicrosoftAjaxWebForms.js"));
// Use the Development version of Modernizr to develop with and learn from. Then, when you’re
// ready for production, use the build tool at http://modernizr.com to pick only the tests you need
bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
"~/Scripts/modernizr-*"));
ScriptManager.ScriptResourceMapping.AddDefinition(
"respond",
new ScriptResourceDefinition
{
Path = "~/Scripts/respond.min.js",
DebugPath = "~/Scripts/respond.js",
});
}
Мои вопросы следующие:
1) У меня сложилось впечатление, что enableOptimization должен был отключить оптимизацию, и я буду видеть в браузере не связанные скрипты без необходимости изменять мою разметку. Я думал, что scriptManager автоматически обрабатывает это и выталкивает отдельные файлы JS, когда видит вышеуказанный флаг.
2) Наличие отладки в true в web.config также приведет к тому, что enableoptimization станет false.
Являются ли оба эти предположения ложными?
РЕДАКТИРОВАТЬ
1) Это и это похожие вопросы, но нет ответов!
РЕДАКТИРОВАТЬ 2
public class OptimizationModule : IHttpModule
{
private const string PARAM_NAME = "minify";
public void Dispose()
{
//throw new NotImplementedException();
}
public void Init(HttpApplication context)
{
context.BeginRequest +=(new EventHandler(this.context_BeginRequest));
}
private void context_BeginRequest(Object source, EventArgs e)
{
// Create HttpApplication and HttpContext objects to access
// request and response properties.
HttpApplication application = (HttpApplication)source;
if (application != null && application.Request.QueryString[PARAM_NAME] != null)
{
bool minify;
bool.TryParse(application.Request.QueryString[PARAM_NAME], out minify);
if (!minify)
{
BundleTable.Bundles.Clear();
BundleConfigs.GenerateBundles(BundleTable.Bundles, false);
}
else {
BundleTable.Bundles.Clear();
BundleConfigs.GenerateBundles(BundleTable.Bundles, true);
}
}
}
}
Я попытался добавить httphandler, чтобы позволить роскошь для изменения оптимизации во время работы приложения. Поэтому я подумал, что просто передам что-то вроде этого: localhost/page.aspx? Minify=false на стороне клиента, чтобы посмотреть, как выглядит незавершенная версия, если мне нужно что-то отладить. Но это, похоже, ничего не меняет. Значит ли это, что любые настройки, которые у меня есть в начале, будут сохраняться в течение всего сеанса или их можно будет изменить.