如何在 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(使用前将#替换为@)