如何在 Blazor 中获取客户端 IP 和浏览器信息?

2024-01-11

如何在 Blazor 服务器端获取 IP 地址和浏览器名称/版本等客户端信息?


好吧,我今天早上遇到了这个问题,我为服务器端 Blazor 解决这个问题的方法是创建一个类,然后您可以将其作为作用域服务注入到 _host.cshtml 上,然后在 Blazor 组件上的任何位置访问它,因为 Razor 页面已经支持这一点。

    public class BlazorAppContext
    {
        /// <summary>
        /// The IP for the current session
        /// </summary>
        public string CurrentUserIP { get; set; }
    }

启动.cs:

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
      ...

      services.AddScoped<BlazorAppContext>();

      ...
    }

_host.cshtml:

@inject IHttpContextAccessor httpContextAccessor
@{
    BlazorAppContext.CurrentUserIP =   httpContextAccessor.HttpContext.Connection?.RemoteIpAddress.ToString();
}

您还可以尝试一种 Scoped 方法,然后可以通过 DI 使用该方法。

注解:

如文档中所述,“Blazor WebAssembly 应用程序当前没有 DI 作用域的概念。作用域注册服务的行为类似于单例服务。但是,Blazor Server 托管模型支持作用域生命周期。在 Blazor Server 应用程序中,作用域服务注册的范围仅限于连接。因此,对于范围应限于当前用户的服务,首选使用范围服务,即使当前的目的是在浏览器中运行客户端。”

我希望它有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Blazor 中获取客户端 IP 和浏览器信息? 的相关文章

  • 仅允许在 blazor 中上传特定文件类型

    我在用BlazorInputFile用于在 Blazor 中上传文件的包 Problem 这段代码不起作用
  • BlazorWebView 内的 .NET MAUI Xaml

    我正在完全使用 Blazor 构建我的应用程序 一切都发生在我的 BlazorWebView 内 是否可以使用类似的东西RefreshView在 razor 文件中 我知道我可以实例化一个ContentView从代码后面但是我可以将其实现到
  • 共享类与 swagger 生成的类

    我有一个包含三个项目的 asp net Blazor VS 解决方案 Shared ASP NET核心API Blazor 网络组件 我创建了一堆课程Shared项目和其他两个项目 参考了Shared项目 到目前为止一切都很好 然后我用了S
  • Blazor 3.1 嵌套 onmouseover 事件

    我有一个问题 嵌套 div 都有 onmouseover onmouseout 事件 我有一个导航菜单 该菜单由 onmouseover 事件触发 从屏幕一侧弹出 在这个导航菜单中 我有一个弹出打开的子菜单 它也是由 onmouseover
  • 如何使用 Blazor 在 ASP.NET CORE 中更新数据库后刷新网页

    我正在制作一个小型房间预订网络应用程序 我希望在给定的时间间隔内刷新网页 即给定的一分钟或对数据库进行更改时 我发现StateHasChanged 但我真的不知道如何实现它 这里是新手一克诺比 我尝试将其放在将约会添加到日程表的函数中 va
  • Blazor 与 Razor

    随着 Blazor 的发明 我想知道这两种语言之间是否存在显着的效率 无论是在代码创建方面还是在代码的实际编译 执行方面 https github com SteveSanderson Blazor https github com Ste
  • Blazor WeatherForecast 示例如何工作?

    Blazor 的 Hello World 项目模板包括天气预报示例 除了计数器增量示例之外 我用这个来看看幕后发生了什么 我似乎无法弄清楚 基本上 如果我注释掉获取天气 json 数据的代码行 那么我会无限期地看到 正在加载 到目前为止是有
  • 没有 Duende 身份服务器的 Blazor

    我有一个小型 Blazor WASM 项目 最近将其迁移到 net 6 但现在我尝试运行已发布的项目 应用程序警告我 我没有 Duende Identity Server 的许可证 我的问题是 我可以不用 Duende Identity S
  • Blazor WASM(独立)B2C 身份验证与 Azure Function App 身份验证

    我正在开发 Blazor WASM 独立 不是 ASP NET 核心托管 应用程序 该应用程序已与我的 B2C 租赁集成以进行用户身份验证 我能够成功地针对 B2C 进行身份验证 没有出现任何问题 在另一个 Azure 目录中 我有一个启用
  • 是否可以在 Blazor 中混合客户端和服务器端方法?

    例如 假设我正在创建一个简单的更改密码页面 用户名 当前密码 新密码 确认新密码 总而言之 我希望使用服务器端 Blazor 来消除编写单独的 API 后端的需要 但是 我希望在客户端中运行一些简单的验证代码 新密码和确认密码不匹配 密码复
  • MVC 中的 Blazor:组件被渲染,但 @onclick 不起作用。连接问题

    我正在尝试在 net core 3 MVC 项目中使用 Blazor 我使用了一些教程来做到这一点 例如https fizzylogic nl 2019 08 18 integrating blazor in an existing asp
  • 如何将 blazor 客户端/服务器应用程序发布到 Linux Web 服务器?无法访问 ssh 并且 dotnetpublish 没有给出index.html

    我已经构建了一个 blazor 应用程序 目前没有任何问题 当我调用 dotnetpublish cRelease 时 我得到一个已发布的项目 除了输出是一个可执行文件 ubuntu将其作为八位字节流或类似的东西拾取 如果我运行它 它只会在
  • OnAfterRenderAsync 未触发

    我试图找出为什么我无法在 Blazor 中获取 OnAfterRenderAsync 方法 在尝试了多种选项并查看 Microsoft 文档后 我似乎找不到解决方案 我确信我错过了一些东西 但我无法弄清楚问题是什么 在下面的代码中 OnIn
  • dotnet.timezones.blat 返回 404 - 文件存在 - blazor 部署 [重复]

    这个问题在这里已经有答案了 我正在使用 Visual Studio 2022 wasm 托管站点项目 默认样板 我将其发布到 iis 服务器 但出现以下错误 我不知道为什么会发生这样的错误 我可以在框架文件夹中看到文件 doenet tim
  • 延迟的 OnParametersSetAsync 任务触发子组件的重复 OnParametersSet

    当父页面 组件有一个 长时间 运行的 OnParametersSet 事件时 我试图避免在子组件中触发重复的 OnParametersSet 事件 例如 这是一个带有一些子组件的基本页面 page test
  • 将 Blazor JS 脚本写入 blazor 组件

    我正在构建 Blazor 应用程序 我需要动态添加仅在单个 Blazor 组件中使用的 JavaScript 文件 您可能知道 Blazor 只允许向根 HTML 文档添加脚本标签 这使得添加仅在单个组件中需要的 JavaScript 文件
  • 使 MudBlazor 表格的一行可点击?

    我用 MudBlazor 制作了这张桌子
  • 是否可以从 Razor/Blazor 组件获取原始 HTML?

    我想使用 MailKit 设置 邮件 新闻通讯 我的网站堆栈基于 Blazor Web 程序集并使用 Razor 组件 我想知道是否有一种方法可以使用我编写的剃刀组件 将 HTML 输出到我用来生成电子邮件正文的 MimeMessage 对
  • 在 blazor 中添加全局使用指令

    命名空间 MyClassLibrary Models 中不存在类型或命名空间名称 XXX 是否缺少程序集引用 该错误参考此 BlazorProject MyPager azor g cs 在这种情况下我得到了这个错误 创建了一个类型的文件
  • 为 Razor 组件添加 XML 文档

    有没有办法为 Razor 组件添加 XML 文档 我注意到 Microsoft 的一些组件有 IntelliSense 中显示的文档 然而 将通常的 XML 文档添加到代码隐藏部分类似乎不起作用

随机推荐

  • 将 WebGL 非连续线渲染为单个对象

    我有多个 WebGL 线要渲染 它们都具有相同的渲染风格 因此 为了提高性能 我想在一次绘制调用中将它们全部渲染为单个对象 但问题是这些线路并不全部相互连接 请参阅此处的示例 http jsfiddle net b6jgS 6 http j
  • 在 C++ 中打包嵌套结构

    使用 Visual Studio 2017 以下给出 struct AAA 15 bytes double d short s char a1 char a2 char a3 char s4 char s5 struct BBB AAA d
  • 为什么异常处理不好? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Google 的 Go 语言没有例外作为设计选择 而 Linux 名人 Linus 则称例外为垃圾 为什么 异常使编写代码变得非常容易 其中抛出
  • 如何在 C# 中获取下一个(或上一个)枚举值

    我有一个枚举 其定义如下 public enum eRat A 0 B 3 C 5 D 8 所以给定值eRat B 我想要得到下一个 即eRat C 我看到的解决方案是 没有范围检查 Array a Enum GetValues typeo
  • 如何使用 Salt Stack 执行多个命令?

    我尝试添加 mypack pkg installed pkgs mercurial git cmd run name mkdir p opt mypack cmd run hg pull u R opt mypack hg clone R
  • 为什么 FileInfo 显示额外的文件扩展名?

    我在为下载器创建文件下载列表时遇到问题 并且收到无法解释的 文件不存在 返回 我的 avi 文件返回 但 exe 和 txt 文件不存在 现在 通过拉入整个目录并检查文件内容 我发现我的 exe 文件显示 exe exe 我的 txt 文件
  • 检测 gtk.treeview 中的列何时调整大小

    当列的大小发生变化时 我可以捕获什么信号来检测gtk TreeView 我似乎无法在文档中找到它 gtk TreeViewColumn http library gnome org devel pygtk stable class gtkt
  • aarch64 是否有不可缓存(=缓存旁路)加载或存储指令?

    在sparc架构中 有一个ASI 地址空间指示符 被传递给加载 存储指令 因此如果ASI为0x20 则像IO访问一样绕过缓存 即使内存范围在页表中设置为可缓存 缓存也会被绕过 这有时非常方便 例如使用变量在核心之间同步时等 aarch64架
  • 用 R 绘制漂亮的饼图

    假设我有这个简单的数据 mydata lt data frame group c A B 0 AB FR c 20 32 32 16 如果我想从此数据框创建饼图 我可以这样做 with mydata pie FR labels paste0
  • 如何在rmarkdown上添加水印图片?

    我正在搜索并尝试将图像作为水印添加到 rmarkdown pdf 我正在使用render函数生成 PDF 并看到 usepackage draftwatermark 和这个问题 rmarkdown 中的水印 https stackoverf
  • 是否有适用于 .NET Compact Framework(Windows Mobile 6.1、SQLServerCE)的免费 ORM?

    看来我找到了一个不错的商业变体 http www llblgen com defaultgeneric aspx 但我正在寻找免费的 有人知道一些吗 怎么样OpenNETCF ORM http orm codeplex com 它是免费的
  • 如何在移动设备上强制桌面视图?

    如何使用 Bootstrap 在移动设备上强制显示桌面视图 我已经尝试修复viewport宽度为1024 但仍然不起作用 有什么建议吗 您只需要设置Viewport 而不是这个 响应式版本 看看这里 应该可以解决你的问题 SO bootst
  • 使用 Bash 将一大块文本回显到文件中 [重复]

    这个问题在这里已经有答案了 我需要运行一个 Bash 脚本 该脚本可以将 300 行 Groovy 脚本回显到 tmp 文件 最好的方法是什么 我当前的解决方法是将脚本文件放在网上并下载 使用heredoc语法将其他脚本嵌入到shell脚本
  • 为什么我的 rvm 不允许我切换到替代 Ruby?

    Ubuntu 已经安装了 Ruby 1 8 7 然后我安装了rvm并用它安装了Ruby 1 9 2 这是我想要使用的版本 但是 ruby v 始终返回 1 8 7 如何让 rvm 使用 Ruby 1 9 2 bxu vm bxu rvm u
  • 强类型枚举中范围解析背后的基本原理

    在强类型枚举中无条件要求显式范围解析背后的基本原理是什么 N2347 解释了与老式枚举的区别 老式枚举缺乏隐式转换 指定存储类型的能力 并且没有在周围范围内注入名称 如 C 03 它继承了 C 换句话说 写enum E1 a b c 正如C
  • 调用 LoadLibrary() 时静默捕获窗口错误弹出窗口

    调用 LoadLibrary 时是否可以静默捕获诸如 无法在动态链接库 xxx 中找到过程入口点 xxx 之类的错误弹出窗口 您可以通过调用来抑制错误弹出窗口设置错误模式 http msdn microsoft com en us libr
  • 如何查看 git 上创建多个文件的日期?

    我想查看指定目录上所有文件的 git 创建日期 添加它们的首次提交日期 我将把我的解决方案分成几个步骤 获取存储库中所有文件的列表 git ls files 这将返回存储库中所有文件的相对路径列表 获取给定文件第一次提交的 SHA 1 gi
  • 多边形斑点的中心线(二值图像)

    我有一个蠕虫的二进制图像 斑点提取效果很好 我有兴趣在斑点 蠕虫 上拟合中心线 到目前为止 我想出了这个 从多边形开始 在图像中提取斑点的轮廓之后 我应用了 voronoi 计算并丢弃了多边形 蓝色 之外的所有顶点 这给了我可以的黑色中心线
  • 如何在 Awesomium 中隐藏光标

    我试过这个
  • 如何在 Blazor 中获取客户端 IP 和浏览器信息?

    如何在 Blazor 服务器端获取 IP 地址和浏览器名称 版本等客户端信息 好吧 我今天早上遇到了这个问题 我为服务器端 Blazor 解决这个问题的方法是创建一个类 然后您可以将其作为作用域服务注入到 host cshtml 上 然后在