在输出缓存模块触发之前触发模块

时间:2013-09-16 08:54:39

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

我正在使用asp.net mvc输出缓存并遇到了一个问题。

我正在覆盖全局asax中的GetVaryByCustomString方法,其客户实现是构建自定义字符串。在此字符串上构建基于插入另一个httpmodule中的httpcontext的数据。

我遇到的问题是在将值放入httpcontext之前会触发OutputCacheModule - 这是在另一个httpmodule中完成的。

在outputcache模块执行之前,有没有办法可以触发不同的httpmodule?

或者还有另一种解决方案。

1 个答案:

答案 0 :(得分:1)

尝试按.net管道(http://msdn.microsoft.com/en-us/library/ff649096.aspx)执行的顺序对事件进行排序。

例如,您可以使用BeginRequest事件,即第一个要引发的事件:

public class MyModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.BeginRequest += context_BeginRequest;            
    }

    void context_BeginRequest(object sender, EventArgs e)
    {
        var application = (HttpApplication)sender;
        var context = application.Context;

        // do something
    }

    public void Dispose()
    {
    }
}