我在控制器处理中有一条路线:
/my-site-{x}
然而,它正在接替生活在网址上的一系列遗留资源:
/my-site-some_value.htm
所以我想我会写一个HttpModule
,它会从旧的URL(以Server.Transfer
结尾)到新的.htm
(使用为MVC引入的无扩展URL和IIS7)。实际上,我使用HttpModule
的原因是因为旧的资源是由HttpModule
路由的,在路由是.NET的实际部分之前,所以我不想复制转移代码实际处理请求的所有单独的.aspx。
令我惊讶的是,我的代码遇到了错误,因为他们开始无法识别{x}
url参数的值。检查后,我意识到,而不是
"some_value"
我看到了
"some_value.htm"
Server.Transfer
之后。
TL; DR;路由字典接收url,但使用RawUrl
属性在任何重写之前获取原始路径,而不是Server.Transfer
承诺,即“重新启动.net处理管道,当前请求只是一个新的网址路径“。除了在我的MVC控制器中添加代码然后再次删除.htm
之外,还有一种优雅的方法吗?