我在我的.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的自定义实现,但是作为一个密封的类我无法实现。
任何帮助?
答案 0 :(得分:1)
我建议使用实现IHttpModule接口的自定义HttpModule,并在自定义HttpModule的Init方法中订阅PostAuthorizeRequest事件,此事件在MVC应用程序生命周期中的缓存事件之前触发。您需要将自定义模块添加到web.config中,因为您订阅了控制管道的模块中HttpApplication类触发的事件,所以不需要删除或重新排序任何模块。您也可以在没有Global.asax
中的自定义模块的情况下实现此目的