我有第三方自定义身份验证HTTP模块。我希望这个模块配置为控制器的特定动作方法。这可能吗?
我知道我们可以通过在文件夹级别使用适当的web.config来配置文件夹级别,但我正在寻找特定控制器的特定操作方法。
答案 0 :(得分:4)
您无法将Http模块启用到特定控制器,但您可以将其启用到web.config中的特定请求路径。这有效地完成了工作。以下web.config代码段仅对与“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的更多信息。
答案 1 :(得分:0)
我相信你正在寻找动作过滤器。网上有很多样本可以展示如何设置它们。
http://msdn.microsoft.com/en-us/library/dd381609%28v=VS.98%29.aspx
答案 2 :(得分:0)
你应该使用ActionFilters。 如果你真的想使用HttpModule,那么模块必须检查它是否应该根据URL执行其逻辑。 HttpModule对控制器一无所知,反之亦然。