我们有一个使用Orchard CMS的网站,我们编写了一个“RedirectFilter”来对遗留网址进行永久重定向(与相关内容项的AutoroutePart
模式不匹配的别名)。
过滤器实现IActionFilter
并继承FilterProvider
。它工作正常,当它进行重定向时,它会调用OnActionExecuting
中的以下方法:
filterContext.HttpContext.Response.RedirectPermanent(targetPath, true);
根据文档,第二个参数表明将抛出ThreadAbortException
来中止当前请求。但是,仍然会为遗留URL处理请求,我知道这是因为部分驱动程序仍然执行两者旧URL和新URL。
如果没有Orchard继续执行它,我怎样才能从过滤器中止请求?
答案 0 :(得分:1)
刚刚解决了这个问题。需要改为使用它:
filterContext.Result = new RedirectResult(targetPath, true);
我猜你不能在过滤器内调用RedirectPermenant
。