仅针对extionsionless URL执行HtttModule

时间:2010-03-31 16:17:33

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

我有一个必须在ActionMethod之前运行的httpModule。我不希望它在图像请求进入时执行。

由于某些原因,我真的需要一个HttpModule并且不能使用ActionFilter

这样做的方法是什么?

public class PostAuthenticateModule : IHttpModule
{

        public void Init(HttpApplication app)
        {
           app.PostAuthenticateRequest += new EventHandler(this.OnEnter);
        }

        private void OnEnter(object source, EventArgs eventArgs)
        {

        }

        private static void Initialize()
        {

        }
        public void Dispose()
        {
        }


}

的web.config

<httpModules>
  <add type="PostAuthenticateModule.PostAuthenticateModule , PostAuthenticateModule" name="PostAuthenticateModule"/>
</httpModules>

2 个答案:

答案 0 :(得分:1)

如果您使用的是IIS7,请查看HttpModule Preconditions。听起来像你想要preCondition="managedHandler"

E.g。它可能看起来像这样:

<system.webServer>
  <modules>
    <remove name="PostAuthenticateModule" />
    <add type="PostAuthenticateModule.PostAuthenticateModule , PostAuthenticateModule" name="PostAuthenticateModule" preCondition="managedHandler" />
  </modules>
</system.webServer>

HTHS,
查尔斯

答案 1 :(得分:0)

如果它是静态内容类型,只需检查请求并将模块执行短路。对于某些内容类型,您无法有条件地将模块添加到管道中。