【发布时间】:2011-09-23 11:14:19
【问题描述】:
是否可以在初始重定向后不使用 301/302 重定向将 MVC3 请求重定向到区域路由?让我解释一下我想要什么,因为这听起来很复杂。
基本流程:
- 请求:http://somedomain.com/?ContextId=00001
- 重定向
- 从区域 01 提供内容;控制器主页;行动指数
- 从 url 中删除了 ContextId 查询字符串条目
所以最终结果是在设置初始 ContextId 之后对http://somdomain.com 的所有请求都将使用该区域,直到指定新的 ContextId 为止。
我可以使用IHttpModule 来捕获查询字符串,然后在会话中为后续请求设置一些值,但是我需要发出RedirectToXXXX() 调用来进行重定向。这将生成一个包含该区域的 URL,然后我需要在将来识别此类“映射”请求以防止重定向循环。呜呜呜。
我查看了自定义路由约束,但路由在管道中发生得太早,以至于没有可用的会话,这使得很难“知道”约束所附加的路由是否是我想要的。尤其是在这个阶段我不希望该区域包含在请求 URL 中。
这可能吗?任何想法都将受到欢迎。
【问题讨论】:
-
可以在路由约束中使用 cookie 吗?
-
现在只是使用 cookie 进行测试。但不确定它是否适合我们的最终解决方案。感谢您的建议 - 将报告调查结果。
-
@tvanfosson 似乎 cookie 是可以接受的,并且它们在 RouteConstraint 中运行良好。由于路由图中缺少命名空间,因此对 URL 404ing 有一些小问题。谢谢。如果您想将其发布为答案,我会打勾:)
标签: asp.net-mvc-3 routing