控制命令解雇asp.net mvc httpmodules

时间:2013-09-16 18:32:14

标签: asp.net-mvc asp.net-mvc-4 httpmodule outputcache

我在我的.net应用程序中使用asp.net mvc输出缓存,但想要控制何时被触发。我有另一个自定义的http模块,我需要在输出缓存模块触发之前触发。我在web.config中进行了以下更改

  <modules runAllManagedModulesForAllRequests="false">
        <remove name="OutputCache" />
        <add name="MyCustomModule" type="Namespace.MyCustomModule" preCondition="managedHandler" />
        <add name="OutputCache2" type="System.Web.Caching.OutputCacheModule"/>
        <remove name="PassportAuthentication" />
        <remove name="Profile" />
        <remove name="AnonymousIdentification" />
        <remove name="FileAuthorization" />
        <remove name="Session" />
        <remove name="WindowsAuthentication" />
        <remove name="UrlAuthorization" />
    </modules>

问题是它仍然无法控制模块触发的顺序。输出缓存模块仍然在自定义模块之前触发。有办法管理吗?

我尝试创建OutputCacheModule的自定义实现,但是作为一个密封的类我无法实现。

任何帮助?

1 个答案:

答案 0 :(得分:1)

我建议使用实现IHttpModule接口的自定义HttpModule,并在自定义HttpModule的Init方法中订阅PostAuthorizeRequest事件,此事件在MVC应用程序生命周期中的缓存事件之前触发。您需要将自定义模块添加到web.config中,因为您订阅了控制管道的模块中HttpApplication类触发的事件,所以不需要删除或重新排序任何模块。您也可以在没有Global.asax

中的自定义模块的情况下实现此目的