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;
}
}