【问题标题】:return View(); does not work after FormsAuthentication.SignOut() have been executed返回视图(); FormsAuthentication.SignOut() 执行后不起作用
【发布时间】:2014-02-24 21:57:32
【问题描述】:

我希望用户在单击链接时被重定向到注销视图,但是基于某些条件,注销行为是不同的。以下是MVC4中的代码:

[AllowAnonymous]
public ActionResult LogOff()
{

  FormsAuthentication.SignOut();

  if (<somecondition>)
  {
    return View();
  }
  else
  {
    return Redirect(<someURL>);
  }
}

现在,在“FormsAuthentication.SignOut()”之后,如果条件为真,则返回视图不起作用并引发错误。 但是,如果条件为假,则重定向按预期工作。

问题:如果我们退出,View 将无法工作是预期的行为吗?

谢谢。

【问题讨论】:

  • 使用return View();会出现什么错误。
  • 错误是“无法使用 [] 将索引应用于 'System.Dynamic.DynamicObject' 类型的表达式”
  • 返回视图时是否有可能某种ViewBag/ViewData 对象未初始化?
  • 不,重定向是在操作结束时,进一步没有任何 ViewBag 或 ViewData 在视图中的引用。
  • 也许您可以将完整的堆栈跟踪粘贴到您的问题中并找出它出现在哪一行。

标签: asp.net-mvc-4


【解决方案1】:

我认为这是预期的行为,如果您想从授权中覆盖 LogOff 视图

将此添加到您的配置文件中,提供包含LogOff 视图的视图文件夹的正确路径。

  <location path="Views/LogOff">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

【讨论】:

  • 对不起,我不明白这一点。我为什么要覆盖?目前我正在使用“重定向”方法进行重定向。
猜你喜欢
  • 1970-01-01
  • 2019-05-17
  • 2017-10-28
  • 2017-01-16
  • 2015-08-09
  • 2011-10-28
  • 1970-01-01
  • 2021-01-25
  • 1970-01-01
相关资源
最近更新 更多