Допустим, у нас есть следующий код:
public class HomeController : Controller
{
[HttpPost]
public IActionResult AdvanceTokenCallback(string apiToken)
{
Response.Cookies.Append("Token", apiToken, new Microsoft.AspNetCore.Http.CookieOptions()
{
Path = "/",
Expires = _tokenCookieExpirationTime
});
return RedirectToAction(nameof(CreateWorkItem));
}
[HttpGet]
public IActionResult CreateWorkItem()
{
string token = Request.Cookies["Token"];
return View();
}
}
Когда из внешнего API вызывается действие AdvanceTokenCallback
, переменная token
в действии CreateWorkItem
становится null
.Однако в случае, когда я создаю действие «bridge» и перемещаю логику, которая создает там cookie, тогда token
, расположенный в CreateWorkItem, содержит значение, которое я ожидал.
public class HomeController : Controller
{
[HttpPost]
public IActionResult AdvanceTokenCallback(string apiToken)
{
return RedirectToAction(nameof(BridgeRedirect), new { apiToken });
}
[HttpGet]
public IActionResult BridgeRedirect(string apiToken)
{
Response.Cookies.Append("Token", apiToken, new Microsoft.AspNetCore.Http.CookieOptions()
{
Path = "/",
Expires = _tokenCookieExpirationTime
});
return RedirectToAction(nameof(CreateWorkItem));
}
[HttpGet]
public IActionResult CreateWorkItem()
{
string token = Request.Cookies["Token"];
return View();
}
}
AnyИдея, почему это происходит, и есть ли возможность избежать этого дополнительного действия BridgeRedirect
с дополнительным перенаправлением?