Get user-agent and ip in Blazor server-side app(在Blazor服务器端应用程序中获取用户代理和IP)
问题描述
我使用Blazor创建了一个服务器端应用,并且我希望获得每个页面请求的IP和用户代理,我如何才能实现这一目标?在.NET核心应用程序中,我只需要在控制器中使用以下代码:
var userAgent = Request.Headers["User-Agent"].ToString()
但在Blazor中我无法检索此数据。
推荐答案
用户代理:
您可以通过JavaScript interop获取。按照以下简单步骤操作:
在您的_Host.cshtml
文件上:
<script>
window.getUserAgent = () => {
return navigator.userAgent;
};
</script>
要在任何Blazor页面上获取用户代理:
var remoteUserAgent = await JSRuntime.InvokeAsync<string>("getUserAgent");
请注意,您不需要针对每个请求发送用户代理,您可以随第一个请求一起发送它,所有其他客户端通信都将通过同一套接字进行。
远程IP:
坏消息:"目前没有好的方法。我们将研究如何向客户提供此信息。"有关详细信息,请访问How do I get client IP and browser info in Blazor?
编辑2019年12月31日:
我想我对如何访问HttpContext
想得太多了。阅读一些@enet评论和"How to use the HttpContext object in server-side Blazor to retrieve information about the user, user agent"帖子,我意识到您可以通过第一个请求访问HttpContext
,而不是通过SignalR请求。我的意思是,Blazor服务器通过http请求将App发送到客户端(浏览器),此时,当Blazor服务器APP被提供给客户端时,您可以访问HttpContext
。我将Michael Washington的答案复制粘贴到这里(现已删除),此答案与Soroush Asadi的评论非常接近:
在启动文件中添加到ConfigureServices(IServiceCollection services)
:
services.AddHttpContextAccessor();
在.razor
页中添加:
@using Microsoft.AspNetCore.Http
@inject IHttpContextAccessor httpContextAccessor
//Then call:
httpContextAccessor.HttpContext.Connection?.RemoteIpAddress.ToString();
这篇关于在Blazor服务器端应用程序中获取用户代理和IP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在Blazor服务器端应用程序中获取用户代理和IP


- MoreLinq maxBy vs LINQ max + where 2022-01-01
- 如何用自己压缩一个 IEnumerable 2022-01-01
- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
- C# 中多线程网络服务器的模式 2022-01-01
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- 输入按键事件处理程序 2022-01-01
- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01
- WebMatrix WebSecurity PasswordSalt 2022-01-01
- C#MongoDB使用Builders查找派生对象 2022-09-04