ASP.NET Zero Session Management

Я совершенно новичок в ASP.NET Core и DDD (доменный дизайн). Недавно я приобрел шаблон запуска ASP.NET Zero, чтобы облегчить начальную задачу. Я люблю проект, но у меня возникают трудности с состоянием сессии.

В нашем приложении я использую сторонние компоненты, такие как продукты Neodynamic.

Мне нужен способ передать текущий идентификатор сеанса и протокол к нескольким из этих компонентов от их соответствующих контроллеров. В ASP.NET MVC это было относительно легко HttpContext.Session.Id а также HttpContext.Request.Scheme, Это кажется немного более запутанным в ASP.NET Core.

Кто-нибудь может заставить меня начать?

2 ответа

Решение

Microsoft.AspNetCore.Session Пакет предоставляет промежуточное ПО для управления состоянием сеанса.

Вызов AddSession() а также UseSession() в вашем Startup учебный класс:

public class Startup
{
    public IServiceProvider ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();

        // Adds a default in-memory implementation of IDistributedCache.
        services.AddDistributedMemoryCache();

        services.AddSession();

        // ...
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        // ...

        app.UseSession();

        app.UseMvc(...);
    }
}

Ссылка: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state?tabs=aspnetcore2x

UserManager класс дает вам информацию текущего пользователя.

Пример:

 public async Task<string> GetCurrentUserName()
 {
      var user = await UserManager.FindByIdAsync(AbpSession.GetUserId().ToString());
      return user.UserName;
 }

IAbpSession AbpSession также может дать вам полезную информацию, которую вы используете, наследуя от ApplicationService абстрактный класс. Interface IAbpSession определяется в Abp.dll.

впрыскивать IAbpSession а также UserManager в требуемом классе, где вы хотите получить информацию.

public class TestClass
{
    private readonly IAbpSession _abpSession;
    private readonly UserManager _userManager;

    public TestClass(
        IAbpSession abpSession,
        UserManager userManager)
    {
        _abpSession = abpSession;
        _userManager = userManager;
    }
}
Другие вопросы по тегам