当前上下文中不存在名为"Response"的名称。

4
我正在使用.Net Core创建Blazor Web应用程序,并尝试在cookie中保存标记,但是我遇到了以下错误:

“当前上下文中不存在Response名称”。

我看过的所有示例中都没有遇到这个问题。我该怎么办?
@functions {
    async Task Submit()
    {
        using (var client = new HttpClient())
        {
            User user = new User(state.user.Username, state.user.Password);
            var response = await client.PostAsJsonAsync("api/adimin/token", user);
            var token = await response.Content.ReadAsAsync<string>();

            var option = new CookieOptions();
            option.Expires = DateTime.Now.AddDays(1);
            Response.Cookies.Append(setting, token, option);
        }
    }
}

你是复制粘贴这个错误吗?还是你的帖子里有打字错误?respose != response - VegardKT
我认为C#中不存在@functions,如果我错了请纠正我。 - Ronald Haan
你的代码示例来自于 blazor 应用程序吗?如果是,那么它在浏览器中运行。如果你需要设置一个cookie,我想你应该在服务器端完成。 - user1429080
也许使用“HttpResponse”而不是“Response”会起作用。来源:https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.httpresponse.cookies?view=aspnetcore-2.2 - Lennart
附注:在所有版本的.NET中,使用using (var client = new HttpClient())都是一个不好的主意。请使用@inject - H H
显示剩余3条评论
3个回答

8
这对我来说很有效:
使用“HttpContext.Current.Response”替换响应中的“Response”。

2

请尝试以下方法。

使用 system.web 库

然后编写 HttpContext.Current.Response


现在它说 'HttpContext' 不包含 'Current' 的定义。 - javafx
1
HttpContext在.NET Framework中可用,但在.NET Core中不可用。 - javafx

1
我知道为什么Response在当前环境中不存在。实际上,在这里没有当前上下文。因此,这里也没有响应。你在这里的“当前上下文”是Blazor组件:“代码后台”。
  1. 你应该在问题中呈现所有相关的代码。
  2. 专注于你遇到的单个问题。
让我建议你从微软文档开始学习Blazor,当你无法解决问题时,可以来这里寻求帮助。 从这里开始:https://learn.microsoft.com/en-us/aspnet/core/blazor/?view=aspnetcore-3.0 希望这可以帮助...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接