在 ASP.Net MVC3 中重定向到不影响 URL 的区域
Posted
技术标签:
【中文标题】在 ASP.Net MVC3 中重定向到不影响 URL 的区域【英文标题】:Redirect to an Area Without Affecting Url in ASP.Net MVC3 【发布时间】: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 有一些小问题。谢谢。如果您想将其发布为答案,我会打勾:) 【参考方案1】:您可以将上下文存储在 cookie 中,并使用 RouteConstraint 中的 cookie 值来强制匹配到正确的区域。
【讨论】:
以上是关于在 ASP.Net MVC3 中重定向到不影响 URL 的区域的主要内容,如果未能解决你的问题,请参考以下文章
防止在 asp.net core 2.2 中重定向到 /Account/Login