ASP.NET 零会话管理
ASP.NET Zero Session Management
我对 ASP.NET Core 和 DDD(领域驱动设计)完全陌生。我最近购买了 ASP.NET Zero 启动模板,以减轻入门的痛苦和学习曲线。我喜欢这个项目,但我在会话状态方面遇到困难。
我在我们的应用程序中使用第三方组件,例如 Neodynamic products。
我需要一种方法将当前会话 ID 和协议从它们各自的控制器传递给其中的几个组件。在 ASP.NET MVC 中,使用 HttpContext.Session.Id
和 HttpContext.Request.Scheme
相对容易。这在 ASP.NET Core 中似乎有点混乱。
有人可以帮助我入门吗?
UserManager
class 为您提供当前用户的信息。
示例:
public async Task<string> GetCurrentUserName()
{
var user = await UserManager.FindByIdAsync(AbpSession.GetUserId().ToString());
return user.UserName;
}
IAbpSession AbpSession
还可以为您提供有用的信息,您可以通过继承 ApplicationService
摘要 class 使用这些信息。 Interface IAbpSession
定义在 Abp.dll.
在所需的 class 中插入 IAbpSession
和 UserManager
以获取信息。
public class TestClass
{
private readonly IAbpSession _abpSession;
private readonly UserManager _userManager;
public TestClass(
IAbpSession abpSession,
UserManager userManager)
{
_abpSession = abpSession;
_userManager = userManager;
}
}
Microsoft.AspNetCore.Session
包提供了用于管理会话状态的中间件。
在您的 Startup
class:
中调用 AddSession()
和 UseSession()
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
我对 ASP.NET Core 和 DDD(领域驱动设计)完全陌生。我最近购买了 ASP.NET Zero 启动模板,以减轻入门的痛苦和学习曲线。我喜欢这个项目,但我在会话状态方面遇到困难。
我在我们的应用程序中使用第三方组件,例如 Neodynamic products。
我需要一种方法将当前会话 ID 和协议从它们各自的控制器传递给其中的几个组件。在 ASP.NET MVC 中,使用 HttpContext.Session.Id
和 HttpContext.Request.Scheme
相对容易。这在 ASP.NET Core 中似乎有点混乱。
有人可以帮助我入门吗?
UserManager
class 为您提供当前用户的信息。
示例:
public async Task<string> GetCurrentUserName()
{
var user = await UserManager.FindByIdAsync(AbpSession.GetUserId().ToString());
return user.UserName;
}
IAbpSession AbpSession
还可以为您提供有用的信息,您可以通过继承 ApplicationService
摘要 class 使用这些信息。 Interface IAbpSession
定义在 Abp.dll.
在所需的 class 中插入 IAbpSession
和 UserManager
以获取信息。
public class TestClass
{
private readonly IAbpSession _abpSession;
private readonly UserManager _userManager;
public TestClass(
IAbpSession abpSession,
UserManager userManager)
{
_abpSession = abpSession;
_userManager = userManager;
}
}
Microsoft.AspNetCore.Session
包提供了用于管理会话状态的中间件。
在您的 Startup
class:
AddSession()
和 UseSession()
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