如何通过 HttpContext 访问 Blazor Server .Net 6 中的 cookie?

2024-05-07

不幸的是,有关在 Blazor Server 中访问 c​​ookie 的教程和之前的 StackOverflow 答案似乎在新的 .Net 版本中变得无效。例如,我无法获得以下任一答案(根据 .net 6 中没有的评论来判断):如何在服务器端 Blazor 中使用 HttpContext 对象检索有关用户、用户代理的信息 https://stackoverflow.com/questions/59538318/how-to-use-the-httpcontext-object-in-server-side-blazor-to-retrieve-information/59538319#59538319
如何在服务器端 Blazor 中访问 HttpContext? https://stackoverflow.com/questions/53817373/how-do-i-access-httpcontext-in-server-side-blazor

我有一个包含以下代码的 Program.cs 文件:

..
builder.Services.AddHttpContextAccessor();
..  

它还有一个 app.MapPost 方法,使用以下方法设置 cookie: HttpContext.Response.Cookies.Append

我可以确认 cookie 有效,因为在邮递员中,我可以在查询此 app.MapPost 方法时成功检索它。

当尝试在 Login.Razor 页面中查询该方法时,它可以工作,但未设置 cookie。在此 Login.razor 中,httpContextAccessor.HttpContext.Request.Cookies["my_cookie"] 始终返回 null (即使响应本身是 200 OK,并且我可以很好地读取其内容,但没有可通过 HttpContext 检索的 cookie)。

这似乎是一个常见问题,从两个链接的答案来看,该问题已解决,但现在在 .net 6 中似乎再次出现问题。如何访问 Blazor Server .net 6 中的 HttpContext 以访问查询中发送的 cookie?


请不要使用AddHttpContextAccessor()在 Blazor 服务器中。

我在.Net6中使用以下方法:

我首先按如下方式修改_Host.cshtml文件。

@{
var myCookie = HttpContext.Request.Cookies["CookieName"];
}
<component type="typeof(App)" render-mode="ServerPrerendered" param-AccessToken="myCookie" />

我将 Cookie 信息放入 myCookie 变量中,并将其分配给组件的param-AccessToken.

然后我去App.razor文件并定义AccessToken变量作为级联值。如下:

<CascadingValue Name="AccessToken" Value="AccessToken">
<CascadingAuthenticationState>
    <Router AppAssembly="@typeof(Program).Assembly">
        <Found Context="routeData">
            <AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
        </Found>
        <NotFound>
            <LayoutView Layout="@typeof(MainLayout)">
                <p>Sorry, there's nothing at this address.</p>
            </LayoutView>
        </NotFound>
    </Router>
</CascadingAuthenticationState>
 @code{
    [Parameter]
     public string AccessToken { get; set; }
 }

最后,任何需要 Cookie 信息值的组件只需将其定义为级联参数即可。例如,我创建一个名为ShowToken.razor并将其代码如下:

@page "/showtoken"

<p>This is a part of Cookie info @(AccessToken != null ? AccessToken.Substring(0,30) : "(null)")</p>


@code {
    [CascadingParameter(Name = "AccessToken")] public string AccessToken { get; set; }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过 HttpContext 访问 Blazor Server .Net 6 中的 cookie? 的相关文章

  • 单例可以促进遗留代码库中的单元测试。好主意好不好?

    各位 我有一个庞大的遗留 Net 代码库 并且我正在尝试向团队引入单元测试 他们是好人 但这对他们来说是全新的 老实说 这对我来说也是相当新的 问题之一是代码库大量使用 System IO 中的静态类 有大量的内部静态类库 并且类不会写入接
  • 使用 linq 2 实体检查 where 子句的两个条件

    嗨 我有一个名为 产品 的表 其中包含列 product id prodcut name prodcut price values like 1200 2000 3000 100 prodcut desc category id 1 2 3
  • 使用 DbContext 进行模型优先,无法初始化新数据库

    我放弃 我找到了这个 http blogs msdn com b adonet archive 2011 03 15 ef 4 1 model amp database first walkthrough aspx http blogs m
  • 如何确定 Console.Out 是否已重定向到文件?

    如果我的程序正在打印到控制台 我会根据 Console WindowWidth 通过插入换行符以某种方式执行自动换行 这非常有效 但是 如果程序的输出被重定向到文件或另一个程序 我希望它跳过自动换行 当出现这种情况时我该如何检测 Conso
  • 使用空值初始化枚举

    如何创建具有空值的枚举 ex public enum MyEnum StringValue X MyX StringValue Y MyY None 其中 None 值为 null 或 String Empty 你可以尝试这样的事情 pub
  • .Net 中可用的并行技术

    我是 Net 平台的新手 我查了一下 发现 Net中有几种做并行计算的方法 任务并行库中的并行任务 即 Net 3 5 PLINQ Net 4 0 异步编程 Net 2 0 异步主要用于执行 I O 繁重的任务 F 有简洁的语法支持这一点
  • .NET CIL 评估堆栈的操作

    我有通过使用注入的 CIL 代码序列Mono Cecil 但是 修改后的 NET C 应用程序将无法运行 客观的 手动从堆栈中加载和弹出值以显示在Console WriteLine for int i 0 i lt 3 i int z so
  • 安装了哪个版本的 .NET Core SDK

    如何知道安装了哪些版本的 NET Core SDK 我如何知道正在使用哪一个 dotnet version 显示正在使用的版本 dotnet list sdks 列出已安装的版本 需要 NET Core SDK 2 1 及更高版本 另请参见
  • Silverlight本地存储

    您可能知道 Silverlight 支持本地存储 我们正在考虑创建可在离线模式下工作的 Sl 应用程序 该应用程序可能需要在客户端缓存相当多的数据 显而易见的解决方案 由于性能问题 使用具有某种基于 XMl 结构的本地存储将无法像我们的 P
  • WPF - 检测鼠标按下一段时间

    检测鼠标按钮何时在特定元素上按住特定时间段的最佳方法是什么 感谢您的提示 我创建了一个附加属性以避免任何代码隐藏 using System using System Windows using System Windows Threadin
  • 在 .NET 中使用 Settings.settings 文件时,配置实际存储在哪里?

    在 NET 中使用 Settings settings 文件时 配置实际存储在哪里 我想删除保存的设置以返回到默认状态 但找不到它的存储位置 有什么想法吗 这取决于您选择的设置是在 用户 范围还是 应用程序 范围 用户范围 用户范围设置存储
  • 使用 ITextsharp 将 Html 导出为 PDF

    我已经尝试了下面的代码 我也遇到了错误 我正在使用最新的 DLL String strSelectUserListBuilder h1 My First Heading h1 p My first paragraph p String ht
  • 为什么自定义类型变量不保存值MVC

    我正在尝试使用 MVC 5 构建一个网站 我有一个包含 3 个变量的控制器类 public class WorkerController Controller public ViewModel viewModel new ViewModel
  • 即使在 GC Collect 和 WaitForPendingFinalizers 之后,窗口对象在关闭后也未释放?

    这是一个简单的测试应用程序 可帮助了解 WPF 内存使用情况 我想了解的关键是为什么MainWindow即使在关闭并等待 GC 完成之后 仍然被引用并且它的内存没有被释放 参见下面的代码清单 文本 MainWindow Finalizer
  • 字典 API(词汇)[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人知道一个好的 NET 字典 API 吗 我对含义不感兴趣 而是我需要能够以多种不同的方式查询单词 返
  • 计算按月分隔的两个日期之间的天数

    我需要计算两个日期之间的天数 DateTime 但有一个转折 我想知道这两天跨越的每个月有多少天 两个人有简单的方法吗 Example 我的开始日期是 30 03 2011 结束日期是 05 04 2011 那么结果应该是这样的 var r
  • 并行应用程序的可变与不可变[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我正在编写的应用程序中 我需要编写大量基本类型 这些类型很可能是不可变的 但我想知道并行应用程序中可变类型与不可变类型的比较如何 您可以对可变
  • IL 的仿制药?

    是否可以在 IL 生成器中使用泛型 DynamicMethod method new DynamicMethod GetStuff typeof int new Type typeof object ILGenerator il metho
  • 运行 t4 脚本作为 resx 文件的自定义工具

    我有一个资源文件MyResource resx 我想改变MyResource Designer cs文件生成 我有一个 t4 脚本 它接受 resx 文件作为输入并给出结果转换 但是 我必须手动运行此 t4 才能使其工作 我看到 resx
  • 实用程序库中应包含哪些内容[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 随着我的项目越来越多 我发现我经常从一个项目到另一个项目 从一个客户到另一个客户重复许多常见的任务 因此 我开始组装一个 实用程序 库 这是这些

随机推荐

  • Android 中如何获取帧

    实际上 我需要从视频中获取所有帧 但在使用 Mediametadataretriever 缩略图 时间戳获取帧时 我经常重复获取第一帧 然后获取特定时间帧 我通过更改所有 GetFrameAtTime options 尝试了很多修复 但仍然
  • 如何避免javascript中for循环内的for循环

    我已经编写了一段运行良好的代码 我想要一个新数组 其中包含 myArr 中的元素 按照 orderArr 中指定的顺序 但是 它在另一个 for 循环中使用 for 循环来匹配数组元素 var myArr a b c d e var ord
  • 从所有通讯组中删除所有前雇员

    因此 今天我被分配的任务是从所有 DL 中删除域中的所有前员工 他们在 AD 中拥有自己的文件夹 有没有什么方法可以快速做到这一点 或者至少比单独检查每个并转到 gt 的成员删除所有更快 Thanks 编辑以添加更多信息 有 822 个用户
  • API 错误 (500):清单未知:清单未知

    it failes to pull the image with SHA256 digest identifier 不幸的是 这是 DockerHub 消除 Docker 1 9 守护进程的向后兼容性的副作用 当使用 Docker 1 10
  • PHP 命名空间和 use 即使我已经使用 use 指定了类,也找不到致命错误类

    我在 PHP 中的名称空间方面遇到了麻烦 例如我有一个这样的文件 namespace App Models Abstracts abstract class Country 然后是另一个像这样的文件 namespace App Models
  • 是否可以使用 Kafka Streams 访问消息头?

    随着添加Headers http apache spinellicreations com kafka 0 11 0 0 javadoc org apache kafka common header Header html到记录 生产者记录
  • 如何使用户输入与变量相关?

    我不知道如何准确地表达这个问题 但这就是我想要实现的目标 我正在使用堆栈实现河内塔插图 这是里面的main 功能 System out println Type the source pole number and the destinat
  • 在Python中为什么ifrank:比ifrank!= 0更快:

    当我改变的时候 for i in range 0 100 rank ranks i if rank 0 pass to for i in range 0 100 rank ranks i if rank pass 我发现第二个代码效率更高
  • 使用 qTip2 确认工具提示对话框?

    因此 当用户单击删除按钮时 我尝试创建一个小型确认对话框 内联 工具提示 我想象它看起来有点像这样 但带有小文本和 确定 和 取消 按钮 但我不是来问如何设计它的 我更喜欢使用 qTip2 作为该工作的插件 但如果你有更好的选择 我也会选择
  • SQL Server 2008 中 CLR 中的线程

    我有一个CLR运行在下面的进程SQL Server2008 它构建了多个表数据的缓存以保存在静态类中以供其他调用稍后使用 我的问题是 我可以通过生成线程来加载缓存中的每个数据集 表来改进加载此缓存的过程吗 我过去一直回避这一点 因为各种帖子
  • AutoCompleteTextView sqlite填充异常

    我的第一篇文章只有不到一半的文字 因此是第二篇 完整的 文章 我正在开发一个测试应用程序 使用 sqlite 填充两个 AutoCompleteTextView 我正在使用汽车制造商和模型进行测试 自动完成的 使自动完成 模型自动完成 ma
  • Android 中无网络、断线的情况如何处理?

    我有一个应用程序需要连接到 Internet 才能执行某些操作 但当没有可用的 Internet 时 它会崩溃 我读到 如果没有互联网 我需要使用 try catch 括号 我尝试使用它 正如您在 AsyncTask 中看到的那样 但它不起
  • 使用 Task.Run() 写入控制台失败

    我的一位同事发现我们的代码存在问题 花了一段时间才弄清楚究竟发生了什么 但可以通过这个简单的示例来最好地证明这一点 Fails class Program static void Main string args Task Run gt C
  • Android 2.x 天城文 unicode 问题

    我正在尝试使用以下代码支持 android 2 x 的梵文字体 即使 android 2 x 无法渲染梵文字体 除了 raswa 和 dirga 存在一些问题之外 代码工作正常 是否有可能在 android 2 x 中获得正确的梵文表示形式
  • 无法将 Visual Studio 项目中的多个文件提交到 subversion

    几周以来 我在使用 Subversion 时遇到了一些问题 当我尝试从 Visual Studio 2017 项目提交文件时 有些文件无法提交到我的 Visual SVN 服务器 准确地说 项目文件夹中的所有文件 如 cs config c
  • 使用 libx264 为 Raspberry pi 编译 Xuggler 时的问题 #2

    我正在尝试编译Xuggler http www xuggle com xuggler 对于 Raspberry Pi 在 Debian 操作系统上运行 又名 Raspbian 我遵循了可用的 基本构建说明 here http www xug
  • 是否有一个“AcceptsOneWidget”也“ProvidesResze”(除了“ScrollPanel”)?

    我有一个复合材料可以扩展ResizeComposite并有一个DockLayoutPanel作为它的根 我可以直接贴进去RootLayoutPanel它之所以有效是因为DockLayoutPanel ProvidesResize 但是 我想
  • 如何监控“即时发生”生成的 Google Alert RSS feed?

    我有一个 Google 快讯 我将其设置为以 RSS 源形式发送当它发生的时候 But 轮询 RSS feed 是获取 RSS feed 的唯一方法 or 当 Feed 是从 Google 发布时 有没有办法收到 Google 警报的通知
  • Flex 与 ActionScript

    我正在尝试构建 实现一个 Flash 视频播放器来播放视频 我研究了 Flex 并仅使用 VideoElement 构建了一个基本应用程序 它在没有静态链接库的情况下编译为 41k 在链接库时编译为 300k 我生成了报告 但仍然不确定为什
  • 如何通过 HttpContext 访问 Blazor Server .Net 6 中的 cookie?

    不幸的是 有关在 Blazor Server 中访问 c ookie 的教程和之前的 StackOverflow 答案似乎在新的 Net 版本中变得无效 例如 我无法获得以下任一答案 根据 net 6 中没有的评论来判断 如何在服务器端 B