Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在回调操作期间使用TempData时,其行为不符合预期_C#_Asp.net Mvc_Asp.net Core - Fatal编程技术网

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

C# 在回调操作期间使用TempData时,其行为不符合预期,c#,asp.net-mvc,asp.net-core,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 returnU

我有一个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" });
}
[HttpGet]
[异名]
[路线(“质询/回调”)]
公共异步任务ExternalLoginCallback(string returnUrl=null,string remoteError=null)
{
TempData[“Test”]=“hello world”;
返回RedirectToAction(“Index”,“App”,new{path=“oauth register”});
}
你可以看到我正在设置一些诱惑数据和重定向。它重定向到的视图只是迭代
TempData
集合并呈现每个键/值

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

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

  • 我在浏览器中访问此质询/回调URL,并确认我已按预期重定向,我的临时数据“hello world”已写入屏幕
  • 现在,我按照应用程序的登录路径,重定向到外部提供商,登录并重定向回我的应用程序。在这里,调试器通过上述操作,并再次执行相同的重定向。但是这次
    TempData
    集合是空的,目标视图没有写出任何内容
  • 我无法理解这一点,因为就我的申请而言,这两种行为肯定是相同的。它们都是对同一端点的GET请求。
    TempData
    是否根据referer或其他请求特定变量表现不同


    我希望有人能帮我摆脱这里的痛苦

    我想这个链接可能会有帮助。我认为问题在于你在登录过程中多次重定向。我不确定。就像我说的,我可以在设置
    TempData
    和重定向的操作方法中看到我的调试器,然后在重定向目标中
    TempData
    已经为空。它们之间没有额外的重定向。我到达第一个动作本身就是一个重定向,这有关系吗?