在ASP.NET Core 2.1中使用Cookie

Ser*_*ore 5 html c# asp.net-mvc asp.net-core

我有一个简单的ASP.NET Core 2.1应用程序,该应用程序应该设置然后读取Cookie。

每当我尝试读取Cookie时,它都会返回null。在浏览器的检查工具中进一步查找,我找不到它。

我想出了一个小小的实现,以查看是否可以弄清发生了什么,但是它不起作用。

 public async Task<IActionResult> Contact(Contato contato)
 {
    await email.SendAsync(contato);

    var option = new CookieOptions();
    option.Expires = DateTime.Now.AddMinutes(10);
    Response.Cookies.Append("EmailEnviado", "true", option);
    var boh = Request.Cookies["EmailEnviado"];

    return RedirectToAction("Contact");
 }
Run Code Online (Sandbox Code Playgroud)

boh通过调试器检查的变量为null,即使它是在前一行中编写的也是如此。

小智 11

首次设置后,您将无法立即读取Cookie。一旦响应创建了cookie,您就可以读取它。考虑一下:

public async Task<IActionResult> OnPostCreateAsync()
{

    var option = new CookieOptions();
    option.Expires = DateTime.Now.AddMinutes(10);
    Response.Cookies.Append("Emailoption", "true", option);
    return RedirectToPage();
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以在Get方法中读取Cookie:

public void OnGet()
{
    var boh = Request.Cookies["Emailoption"];
}
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案,cookie 仅在响应传递到下一页后才出现在请求中 (2认同)