C# 关闭捆绑和缩小(WEBFORMS)
我创建了一个新的asp.net网站来测试此功能。现在,我希望能够动态控制是否可以在运行时切换绑定/缩小。除了关闭优化的那一行之外,大多数代码都是自生成的,如下所示C# 关闭捆绑和缩小(WEBFORMS),c#,asp.net,webforms,bundling-and-minification,C#,Asp.net,Webforms,Bundling And Minification,我创建了一个新的asp.net网站来测试此功能。现在,我希望能够动态控制是否可以在运行时切换绑定/缩小。除了关闭优化的那一行之外,大多数代码都是自生成的,如下所示 public static void RegisterBundles(BundleCollection bundles) { // I ADDED THIS LINE ONLY TO TURN OFF OPTIMIZATION. System.Web.Optimiza
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) 在web.config中将调试设置为true还将触发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,以便在需要调试某些东西时查看未统一版本的外观。但这似乎没有改变任何事情。那么,这是否意味着我在开始时所做的任何设置都将在整个会话过程中继续进行,或者可以对其进行更改。Hi Farax,自从禁用优化后,您是否重新构建了项目?实际上,您必须重建它,而不是运行它,因此右键单击解决方案-->构建项目我遇到了同样的问题,这为我解决了问题