IHttpHandler没有被调用MVC控制器动作方法

时间:2018-05-31 01:46:47

标签: c# asp.net-mvc asp.net-web-api2 httphandler ihttphandler

我已经定义了一个自定义HTTP处理程序来更新请求标头。但是当我打电话给http://localhost:52705/Home/Index时。我没有为该控制器调用我的自定义HTTP处理程序 - >行动要求。我实现如下

public class TestHandler :  IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        return;
    }

    public bool IsReusable { get; private set; }
}

另外,找到HTTPHandler的web.cofing条目

<system.webServer>
    <handlers>
      <add name="TestHandler" type=" mvc_app.Handler.TestHandler" path="*" verb="*"/>      
    </handlers>
    <modules>
      <remove name="FormsAuthenticationModule" />
    </modules>
  </system.webServer>

1 个答案:

答案 0 :(得分:1)

花了一天后如果发现一个技巧来实现我想用IHttpModule实现的相同功能

添加自定义HTTP模块

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

    static void OnBeginRequest(object sender, EventArgs a)
    {
        Debug.WriteLine("OnBeginRequest Called MVC");        
    }

    public void Dispose()
    {
        throw new NotImplementedException();
    }
}

更新web.config以注册自定义HTTP模块

<system.webServer>
    <modules>
      <add name="TestModule" type="mvc_app.Handler.TestModule"/>          
    </modules>
 </system.webServer>

对于上面的解决方案仍然,我试图找出为什么我的OnBeginRequest()方法被调用两次