c# - 在回调操作期间使用时,TempData 的行为不符合预期
问题描述
我有一个 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
,因此没有注册额外的提供程序或任何东西。
我现在执行以下 2 个操作:
- 我在浏览器中访问此质询/回调URL,并确认我已按预期重定向,并且我的临时数据“hello world”已写入屏幕。
- 我现在按照我的应用程序的登录路径,重定向到外部提供程序,登录并重定向回我的应用程序。此处调试器通过上述操作并再次执行相同的重定向。但是这次
TempData
集合是空的,目标视图没有写出任何内容。
我无法理解这一点,因为就我的应用程序而言,这两个操作肯定是相同的。它们都是对同一端点的 GET 请求。是否TempData
根据引用者或其他特定于请求的变量表现不同?
我希望有人能把我从这里的痛苦中解救出来!
解决方案
推荐阅读
- excel - Excel/CSV - 如何停止 excel 自动将字符串格式化为日期
- ruby-on-rails - 无法将 Rails 从 4.20 升级到 5.2.3
- android - 无法使用导入到 AndroidKeyStore RSA 私钥进行签名
- ruby - Ruby canvas_cc gem 导致错误
- node.js - 量角器 - Eclipse - 运行配置 - 缺少量角器选项
- javascript - 旋转虚线边框js
- python - 为什么这段代码没有删除行?(Flask-SQLAlchemy)
- android - 在 Android Camera2 API 中,如何设置自定义图像纵横比或分辨率?
- regex - 正则表达式替换记事本++中标签内的文本
- javascript - 第二个 HTML 模板不会在 Golang 应用程序中呈现