路由何时在管道中进行?

时间:2011-05-23 17:52:40

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing pipeline

何时在ASP.NET MVC管道中进行路由?

ASP.NET Application Life Cycle Overview for IIS 7.0

是否在步骤2(执行URL映射)?

我打算让一些有id

的路线

“激活/(编号)”

“forgotpassword /(编号)”

我希望能够在第4步 - AuthenticateRequest的pipline中尽早访问id。这样我就可以通过URL的id部分将身份验证令牌传递给我的自定义身份验证模块。

我可以在自定义身份验证模块中访问id属性,还是必须从请求URL手动提取它?

感谢您的帮助,

邓肯

2 个答案:

答案 0 :(得分:2)

UrlRouting似乎发生在第9步 - PostResolveRequestCache。

事实上它确实发生在AuthenticateRequest之后,这是第4步。

这是document for UrlRoutingModule

我在反射器中查找了它的Init()方法,这是它订阅PostResolveRequestCache事件的地方。

所以我想我现在必须尝试编写一些优雅地从网址中提取令牌的代码。

答案 1 :(得分:1)

我知道它不是你想要的答案 - 但从安全的角度来看,uri中的令牌是一个坏主意。它们可以通过javascript读取,然后发送到世界上任何其他网站。

要回答你的问题,路由是一个httpmodule,所以它很早就会发生,但在你的身份验证之后就会发生。见:http://msdn.microsoft.com/en-us/magazine/dd347546.aspx#id0070044