应用Asp.Net过滤器来更改ScriptResource.axd的内容

时间:2011-10-21 15:27:33

标签: asp.net httphandler httpmodule scriptmanager scriptresource.axd

我正在尝试使用过滤器将某些文本插入ScriptResource.axd,当我将Js放入CompositeScript元素时,ScriptManager会生成ScriptResource.axd。

我觉得这个任务几乎不可能。

在Asp.Net术语中翻译的这个问题意味着我试图过滤内置处理程序的输出(System.Web.Handlers.ScriptResourceHandler:没有源代码)..

当处理程序与请求关联时,我甚至无法加载可以应用过滤的HttpModules。所以我尝试使用HttpModule(即在PostRequestHandlerExecute中)从早期事件调用System.Web.Handlers.ScriptResourceHandler的“ProcessRequest”,然后在PostReleaseRequestState上应用过滤器...这给了我一个字符串,其编码是不可能的转换(可能已经使用了gzip?)。

我想做的甚至可能吗?你能否就如何进行提出任何建议?

如果您需要更多信息或源代码,请与我们联系。

2 个答案:

答案 0 :(得分:0)

请原谅我,如果不言而喻,如果你只想在.axd中插入添加输出(而不是改变输出),为什么不在引用的页面中包含附加输出? .axd或其他外部资源?如果只需添加额外的输出就可以获得更高的效率。

答案 1 :(得分:0)

最后我对压缩的假设是正确的。我设法通过禁用它来获取ScriptResource.axd文件内容。事实上,在web.config中有一个关于此的配置,您可以在其中禁用压缩。它在本节中:

<system.web.extensions>
   <scripting>
      <scriptResourceHandler enableCompression="false" enableCaching="true" />
   <scripting>
<system.web.extensions>

现在我可以在PostReleaseRequestState中获取HttpModule中的内容,如果我想,我可以在替换字符串后进行一些GZip压缩。我会做一些测试,看看我是否还需要禁用缓存......