【发布时间】:2020-08-04 23:50:34
【问题描述】:
我尝试将 cookie 添加到 ASP.NET Core 3.1 Web 应用程序的响应中。问题是 cookie 没有附加到响应中。这是代码:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync("Hello World!\n");
string cookieValueFromContext = context.Request.Cookies["hello"];
await context.Response.WriteAsync($"Response: {cookieValueFromContext}");
context.Response.Cookies.Append("hello", "cookie", new CookieOptions
{
MaxAge = TimeSpan.FromDays(10),
IsEssential = true
});
await context.Response.WriteAsync("Ending");
});
});
}
这就是我在浏览器中看到的:
我尝试调试应用程序,调试在附加 cookie 方法处停止,没有引发异常。不显示消息Ending。在浏览器(Chrome)中没有存储 cookie,我检查了应用程序/cookies,即使在重新加载后也没有。据我所知,如果 cookie 设置为必需,我不需要添加 Cookie 策略选项。从我在其他帖子中读到的内容,浏览器可能会选择哪些 cookie 被视为必不可少,即使您将其设置为必不可少。会是这样吗?
【问题讨论】:
-
我在 append 函数周围添加了一个 try/catch,这是我收到的错误:异常:无法修改响应标头,因为响应已经开始。在 Microsoft.AspNetCore.HttpSys.Internal.HeaderCollection.ThrowIfReadOnly() 在 Microsoft.AspNetCore.HttpSys.Internal.HeaderCollection.set_Item(String key, StringValues value) 在 Microsoft.AspNetCore.Http.ResponseCookies.Append(String key, String value, CookieOptions 选项)在 WebApplication1.Startup.c.b__1_2>d.MoveNext() 有谁知道问题是什么?
标签: asp.net-core web cookies