【发布时间】:2012-01-12 06:39:56
【问题描述】:
我有一个第三方自定义身份验证 HTTP 模块。我希望将此模块配置为控制器的特定操作方法。这可能吗?
我知道我们可以通过在文件夹级别使用适当的 web.config 在文件夹级别进行配置,但我正在寻找特定控制器的特定操作方法。
【问题讨论】:
标签: c# asp.net .net asp.net-mvc httpmodule
我有一个第三方自定义身份验证 HTTP 模块。我希望将此模块配置为控制器的特定操作方法。这可能吗?
我知道我们可以通过在文件夹级别使用适当的 web.config 在文件夹级别进行配置,但我正在寻找特定控制器的特定操作方法。
【问题讨论】:
标签: c# asp.net .net asp.net-mvc httpmodule
您无法将 Http 模块启用到特定控制器,但您可以将其启用到 web.config 中的特定请求路径。这有效地完成了工作。以下 web.config sn-p 仅对匹配“yourController”路径的请求启用“ThirdParty.HttpModule”。这也应该适用于 MVC、WebForms 和通用处理程序。
<location path="yourController" inheritInChildApplications="false">
<system.web>
<httpModules>
<add name="yourModule" type="ThirdParty.HttpModule"/>
</httpModules>
</system.web>
</location>
inheritInChildApplications 部分很重要,如果您在此应用程序的子目录中有任何其他应用程序,因为默认情况下子应用程序会继承此配置,您可能不希望此模块在子应用程序中工作。
更多关于MSDN的信息。
【讨论】:
我相信您正在寻找操作过滤器。网络上有许多示例演示了如何设置它们。
http://msdn.microsoft.com/en-us/library/dd381609%28v=VS.98%29.aspx
【讨论】:
您应该为此使用 ActionFilters。 如果你真的想使用 HttpModule,那么模块必须检查它是否应该基于 URL 执行其逻辑。 HttpModule 对您的控制器一无所知,反之亦然。
【讨论】: