Я пытаюсь выучить ядро asp. net, точнее, сервер блазор. Из документации видно, что служба, зарегистрированная в качестве области действия, будет создана один раз для каждого соединения. Мой конструктор пользовательских служб запускается дважды при первой загрузке страницы в браузере и дважды снова при каждом обновлении sh страницы.
Я считаю, что это те части кода, которые необходимы для помощи мне определить, почему это происходит. У меня вопрос, как заставить его создать один экземпляр пользовательского сервиса для каждого клиентского соединения? Я получаю правильный вывод на экран, но не предпочитаю, чтобы он запускался дважды.
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddHttpContextAccessor();
services.AddDbContext<AWMOPSContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("AWMOPSContext")),
ServiceLifetime.Transient);
services.AddScoped<UserService>();
}
public class UserService
{
public Associate Associate { get; set; }
public UserService(AWMOPSContext context, IHttpContextAccessor httpContextAccessor)
{
var username = httpContextAccessor.HttpContext.User.Identity.Name.Substring(7);
Associate = context.Associates.Where(a => a.LogonName == username).FirstOrDefault();
Debug.WriteLine($"Hello {Associate.PreferredName} {Associate.LastName}");
}
}
@page "/"
@inject AWMWP.Services.UserService user;
<h1>Welcome @user.Associate.PreferredName @user.Associate.LastName</h1>