RouteBase :: GetRouteData中的Session为空

时间:2013-06-05 07:51:18

标签: asp.net-mvc session redirect

我需要为某些网址执行301重定向。以下是代码的骨架

public override RouteData GetRouteData(HttpContextBase httpContext)
  {
     .
     .
     .

      if (newUrl.Length > 0)
      {
          response.Status = "301 Moved Permanently";
          response.RedirectLocation = newUrl;
          response.End();
      }
  }

这很有效。它重定向正确的某些网址。但是,我希望能够检测到下一个请求中发生了301重定向。所以我希望使用一个标志作为Session变量的一部分。像这样:

httpContext.Session["RedirectHappened"] = true;

但Session对象为null。我如何访问会话?或者是否有任何其他方法来检测当前200 OK请求是否是先前301重定向的结果。

感谢。

1 个答案:

答案 0 :(得分:0)

我们在相应的控制器中使用MVC的RedirectToActionPermanent解决了这个问题,我们使用Session对象设置了标志。

 public ActionResult Index()
 {
    Session["RedirectFromOldUrl"] = true;

    return RedirectToActionPermanent("action", "controller");
 }