在回调操作期间使用时,TempData的行为不符合预期

时间:2018-06-13 15:25:08

标签: c# asp.net-mvc asp.net-core

我有一个ASP.NET Core 2 Web应用程序。它实际上是Identity Server 4的一个实现,但我不相信这与我的问题有关。我有一个控制器,其动作表示来自外部OAuth服务的回调。我已经删除了所有处理程序逻辑,只留下这个:

[HttpGet]
[AllowAnonymous]
[Route("challenge/callback")]
public async Task<IActionResult> ExternalLoginCallback(string returnUrl = null, string remoteError = null)
{
    TempData["Test"] = "hello world";

    return RedirectToAction("Index", "App", new { path = "oauth-register" });
}

您可以看到我设置了一些诱惑数据并重定向。它重定向的视图只是迭代TempData集合并呈现每个键/值。

应用程序使用TempData的默认实现,因此没有额外的提供程序注册或任何内容。

我现在执行以下两项操作:

  1. 我在浏览器中访问了此质询/回调网址,并确认我已按预期重定向,并且我的临时数据是&#34; hello world&#34;被写入屏幕。
  2. 我现在关注我的应用程序的登录路径,重定向到外部提供程序,登录并重定向回我的应用程序。这里调试器通过上述操作并再次执行相同的重定向。但是这次TempData集合为空,目标视图没有写出任何内容。
  3. 我无法理解这一点,因为就我的申请而言,这些行为肯定是相同的。它们都是同一端点的GET请求。 TempData基于引用或其他特定于请求的变量的行为是否不同?

    我希望有人可以让我摆脱痛苦!

0 个答案:

没有答案