合并web服务器控件web和脚本资源(axd文件)



我知道网上有很多类似的问题,但在搜索了过去两天之后,我还没有找到一个有效的解决方案。有些线程已经过时,有些解决方案不起作用,有些太复杂而无法管理,所以……是的,还有一个关于asp.net项目中resources.axd文件的问题。

我开始构建一组服务器控件并嵌入一些资源。在构建控件并将它们拖到页面中之后,浏览器会以.axd脚本的形式请求每个单独的资源。我理解ScriptManager管理这些脚本的部分,但它们还没有准备好使用,例如,在某种.Include("*.axd").中的Bundles中

  • 我尝试了一些combine/miniy/compress/gzip/icecreamOnTop软件包,但都无法运行。

  • 我尝试了StriptManager CompositeScript方法和ScriptResources.axd确实结合在一起,响应是成功的(代码200),但最终脚本不起作用。示例:我在那个复合脚本中包含了jQuerylib,然后试图在页面中使用它,但没有成功。我必须说,我没有在任何地方引用()复合脚本,因为我不知道如何做。如果我设置了路径,则返回404(找到1024字节的限制线程等),并且所有对WebResources.axd的请求都将保留。

  • 我宁愿自己不写HttpHandler。

  • 我还尝试下载了AjaxToolkit,并尝试了组合脚本的ToolkitScriptManager,但这增加了大约4秒的页面加载时间。不用了,谢谢。

我的问题是:在.net 4.5中,目前对此事的处理方法是什么?

我会有很多资源,我想把它们结合起来。最终网站项目中的所有js和css文件都是捆绑的,但如何"捆绑"axd文件?

这里有一个小例子,它将提出以下请求:

单击此处查看图像

我知道我可以将AjaxFrameworkMode设置为Disabled,并且在本例中只有两个第一个WebResources.axd请求,但当我的控件中嵌入了10个css文件时呢?

任何可行的解决方案都将不胜感激。

非常感谢

我设法实现了一些适合我的情况的东西。与其说是一个合适的组合解决方案,不如说是一种变通方案,但它确实有效,目前已经足够了。

  • 我的所有控件都扩展了一个基类,该基类具有一个名为ProcessResources的属性。默认情况下,此属性设置为true。这意味着JS和CSS资源将被注册,并且每个控件都可以独立工作(将生成axd资源)。如果设置为false,则不会注册任何资源,也不会生成axd文件。

  • 基类还有一个静态方法,它接收一个目标路径作为参数,并将所有JS和CSS资源复制到该文件夹(如果它们不存在或已被修改)。此方法返回控件工作所需的所有资源的集合。

这样,在Application_Start上,我可以执行以下操作:

myJsBundle.Inllude(ServerControlA.GetResources("~/ExternalResources",RESOURCES.JAVASCRIPT));

然后只需要将ProcessResources标志设置为false(每个控件或web.config)。所有资源现在都被绑定,并且不会生成axd文件。

最新更新