要在Blazor WebAssembly中检测用户来自哪个网站,您可以使用以下解决方法:
在您的Blazor WebAssembly项目中,打开Program.cs
文件,找到CreateHostBuilder
方法。
在该方法中,添加以下代码来获取当前网站的URL:
using System;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.DependencyInjection;
using System.Net.Http;
using System.Net.Http.Json;
public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add("app");
// 获取当前网站的URL
var uri = new Uri(builder.HostEnvironment.BaseAddress);
var currentWebsite = uri.Host;
// 注册获取当前网站URL的服务
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddScoped(sp => new CurrentWebsiteService(currentWebsite));
await builder.Build().RunAsync();
}
}
public class CurrentWebsiteService
{
public string CurrentWebsite { get; }
public CurrentWebsiteService(string currentWebsite)
{
CurrentWebsite = currentWebsite;
}
}
创建一个名为CurrentWebsite
的服务类,并在构造函数中接收当前网站URL。
在您的Blazor组件中,注入CurrentWebsiteService
服务,并使用CurrentWebsite
属性来获取当前网站的URL。例如:
@page "/"
@inject CurrentWebsiteService CurrentWebsiteService
当前网站: @CurrentWebsiteService.CurrentWebsite
这样,您就可以在Blazor WebAssembly中获取用户来自哪个网站了。请注意,这种方法只能获取当前网站的URL,无法获取前一个或未来的网站URL。