ASP.NET HttpModule请求处理

时间:2013-03-22 15:09:28

标签: asp.net httpmodule

我想通过HttpModule处理静态文件Web请求,以根据某些策略显示CMS中的文档。我可以过滤掉一个请求,但我不知道如何直接处理这样的请求,就像asp.net应该做的那样。

1 个答案:

答案 0 :(得分:1)

这是你要找的吗?假设您正在以集成管道模式运行,所有请求都应该在此处完成,因此您可以在未经授权的情况下终止请求,或者像其他情况一样通过请求。

public class MyModule1 : IHttpModule
{
    public void Dispose() {}

    public void Init(HttpApplication context)
    {
        context.AuthorizeRequest += context_AuthorizeRequest;
    }

    void context_AuthorizeRequest(object sender, EventArgs e)
    {
        var app = (HttpApplication)sender;

        // Whatever you want to test to see if they are allowed
        // to access this file. I believe the `User` property is
        // populated by this point.
        if (app.Context.Request.QueryString["allow"] == "1")
        {
            return;
        }

        app.Context.Response.StatusCode = 401;
        app.Context.Response.End();
    }
}

<configuration>
  <system.web>
    <httpModules>
      <add name="CustomSecurityModule" type="MyModule1"/>
    </httpModules>
  </system.web>
</configuration>