1

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

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

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

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

  • 我不想自己写一个 HttpHandler 。

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

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

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

这是一个小示例,它将发出以下请求:

点击这里查看图片

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

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

非常感谢

4

1 回答 1

0

我设法实现了适合我情况的东西。与其说是一个适当的组合解决方案,不如说是一种解决方法,但它可以工作,而且现在已经足够好了。

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

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

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

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

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

于 2014-11-26T18:01:50.050 回答