【发布时间】:2013-04-03 21:51:12
【问题描述】:
我有一个自定义 IHttpModule,我只想在特定路线上工作。
例如:http://example.com/HandleAzureTask
我希望这个模块只在/HandleAzureTask 路由上被调用/处理。
由于这不是控制器,我无法真正设置[Authorize] 属性;如果用户经过身份验证,如何强制它仅被调用/处理?
我在 ASP.NET MVC 4 上,目前已将我的模块添加到 web.config 中:
<modules>
<remove name="AzureWebDAVModule" />
<add name="AzureWebDAVModule" type="VMC.WebDAV.Azure.Module.AzureWebDAVModule, VMC.WebDAV.Azure.Module" />
</modules>
【问题讨论】:
-
我建议为这条路线创建自定义路线约束...
-
你的 HttpModule 在做什么?如果您仅在此 ASP.NET MVC 应用程序上使用此模块,则可以考虑将其重写为操作过滤器。
-
我有一个 WebDav 服务器 IHttpModule 来处理办公应用程序和 Azure Blob 存储之间的交互。
-
是否需要将该代码保留为模块?如果没有,我建议将其重构为控制器/操作方法,以便您可以利用 MVC 授权。然后,相应地使用路由集合。
-
@darwindave 这个问题部分是由于我正在进行的一个项目。你可以在这里看到它:mvc4webdav.codeplex.com
标签: asp.net-mvc asp.net-mvc-4 routes httpmodule