我有一个包含url重定向的表,之前我使用HttpModule
方法查询数据库并处理重定向(如果找到了这些重定向)。但是现在我想在ActionFilter
中重新设计此功能有两个原因:
HttpModule
处理所有请求,而我只需要在某些类型的内容中重定向。在所有其他情况下,这会导致无意义的数据库查询。目前在HttpModule
我正在使用HttpContext.RewritePath
来实施服务器端重定向。我的问题是如何在ActionFilter
中获得相同的结果。
澄清服务器端重定向:我希望能够从两个不同的链接访问相同的内容。如果将courses/programming-basics/details
(口头网址)重定向到/course/{id}/details
(实际路径),我希望能够使用该动词网址来访问此内容。
目前,使用我正在使用的ActionExecutingContext
filterContext.Result = new RedirectResult(url)
导致 301客户端。
澄清:我希望通过旧网址访问我的内容。按照上面的示例,这将生成一个页面,其中包含两个有效网址的相同内容:courses/programming-basics/details
和`course / {id} / details。也许我错误地使用重定向,但这就是我设法说出我的问题。
答案 0 :(得分:0)
我在这里找到了我的问题的解决方案,正如@Andrei所建议的那样。这条线就足够了:
filterContext.HttpContext.Server.TransferRequest(url);
这返回了正确的内容并保留了旧的详细网址。正是我需要的。