ASP.NET MVC3自定义HttpModule给出错误404

时间:2013-05-08 07:46:07

标签: asp.net-mvc-3 iis-7.5 httpmodule

我们当前的四个.aspx网站,我们有一个定制的HttpModule,可以进行授权(用户可以看到什么)。我已经将旧的.aspx网站重建为MVC。而且因为我们的客户不会全部转到MVC网站我不能使用MVC的Action过滤器,但我需要继续使用HttpModule。

问题是我得到了Http错误404。

我做了什么: - MVC应用程序是bin正确部署(这是验证的,因为没有在IIS中配置的HttpModule它工作正常); - 在HttpModule的Web.Config和IIS7.5中进行适当的配置(这是经过验证的,因为我从HttpModule写了一个文件,看看模块是否首先被调用并按预期运行)

Web.config文件:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
            <add name="WebHIS_Authorization" type="WebHIS_Authorization.AuthorizationModule" />
        </modules>
  </system.webServer>

所以一切似乎都很好。根据日志输入HttpModule的BeginRequest。我甚至在我的日志文件中验证过,在HttpModule离开BeginRequest方法之前,URL仍然是预期的。但看起来似乎MVC路由在HttpRequest离开HttpModule并且IIS返回404之后不再起作用。我希望我可以得到帮助。

如果您需要查看具体的内容,请询问,我会提供适当的信息。

1 个答案:

答案 0 :(得分:0)

我不知道为什么。但是我们遇到了上述错误,因为我们试图处理HTTP请求生命周期的所有事件。我们在事件中添加了处理程序:

BeginRequest
AuthenticateRequest
AuthorizeRequest
ResolveRequestCache
AcquireRequestState
PreRequestHandlerExecute
PostRequestHandlerExecute
ReleaseRequestState
UpdateRequestCache
EndRequest

虽然我们只需要BeginRequest(我们记录其他事件以供将来参考)。所以我们删除了所有其他事件的处理程序,并将处理程序保留在BeginRequest上,我们不再得到http错误。

对不起,我没有具体的信息说明为什么会发生这种情况。我通过试用找到了这个。错误。希望这个主题可以在将来帮助其他人。