组合Web服务器控制Web和脚本资源(axd文件)

时间:2014-11-05 16:33:56

标签: asp.net bundle scriptmanager webresource.axd scriptresource.axd

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

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

  • 我尝试了一些combine / minify / compress / gzip / icecreamOnTop软件包,但无法管理它们。

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

  • 我不想自己写一个HttpHandler。

  • 还试图下载AjaxToolkit并尝试组合脚本的ToolkitScriptManager,但是我的页面加载增加了~4秒。不,谢谢。

我的问题是:.net 4.5中关于此问题的当前方法是什么?

我将拥有大量资源,并希望将它们结合起来。最终网站项目中的所有js和css文件都是捆绑在一起的,但如何捆绑' axd文件?

Here's a little example将提出以下请求:

Click here to view image

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

非常感谢任何有效的解决方案。

非常感谢

1 个答案:

答案 0 :(得分:0)

我设法实现了适合我案例的东西。比正确的组合解决方案更多的工作,但工作,现在已经足够好了。

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

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

这样,在Application_Start上,我可以做类似的事情:

myJsBundle.Inlude(ServerControlA.GetResources(“〜/ ExternalResources”,RESOURCES.JAVASCRIPT));

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