gpt4 book ai didi

c# - 在 Blazor 服务器端应用程序中获取用户代理和 IP

转载 作者:行者123 更新时间:2023-12-03 19:42:33 26 4
gpt4 key购买 nike

我用 Blazor 创建了一个服务器端应用程序,我想获得 ip 用户代理对于每个页面请求,我该如何实现?在 .NET Core 应用程序中,我只需要在 Controller 中使用此代码:

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");

enter image description here

请注意,您不需要在每个请求上都发送用户代理,您可以在第一个请求中发送它,所有其他客户端通信都将通过同一个套接字进行。

远程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 请求将应用程序发送到客户端(浏览器),此时,当 Blazor 服务器应用程序提供给客户端时,您可以访问 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();

关于c# - 在 Blazor 服务器端应用程序中获取用户代理和 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59469742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com