Session ASP.NET零会话管理

Session ASP.NET零会话管理,session,asp.net-core,aspnetboilerplate,neodynamic,Session,Asp.net Core,Aspnetboilerplate,Neodynamic,我对ASP.NET核心和DDD(域驱动设计)完全陌生。我最近购买了启动模板,以减轻开始时的痛苦和学习过程。我喜欢这个项目,但我在会话状态方面有困难 我在应用程序中使用第三方组件,如 我需要一种方法将当前会话ID和协议从它们各自的控制器传递到其中几个组件。在ASP.NETMVC中,使用HttpContext.Session.Id和HttpContext.Request.Scheme相对容易。在ASP.NET核心中,这似乎有点令人困惑 有人能帮我开始吗?UserManager类提供当前用户的信息 例

我对ASP.NET核心和DDD(域驱动设计)完全陌生。我最近购买了启动模板,以减轻开始时的痛苦和学习过程。我喜欢这个项目,但我在会话状态方面有困难

我在应用程序中使用第三方组件,如

我需要一种方法将当前会话ID和协议从它们各自的控制器传递到其中几个组件。在ASP.NETMVC中,使用
HttpContext.Session.Id
HttpContext.Request.Scheme
相对容易。在ASP.NET核心中,这似乎有点令人困惑


有人能帮我开始吗?

UserManager
类提供当前用户的信息

例如:

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

Microsoft.AspNetCore.Session
包提供了管理会话状态的中间件

启动
类中调用
AddSession()
UseSession()

公共类启动
{
公共IServiceProvider配置服务(IServiceCollection服务)
{
services.AddMvc();
//添加IDistributedCache的默认内存内实现。
AddDistributedMemoryCache();
services.AddSession();
// ...
}
公共无效配置(IApplicationBuilder应用程序,IHostingEnvironment环境)
{
// ...
app.UseSession();
app.UseMvc(…);
}
}

参考资料:

我可以实现如上所示的IAbpSession,它可以很好地工作。我遇到的问题是,我需要传递一个绝对Url以及当前会话ID以进行回发。下面是一个使用Neodynamic WebPrintClient`public ActionResult index(){ViewData[“WCPPDetectionSript”]=Neodynamic.SDK.Web.WebClientPrint.CreateWcppDetectionScript(Url.Action(“ProcessRequest”,“WebClientPrintAPI”),null,Url.ActionContext.HttpContext.Request.Scheme)的示例,Url.ActionContext.HttpContext.Session.Id);返回视图();}`
public class TestClass
{
    private readonly IAbpSession _abpSession;
    private readonly UserManager _userManager;

    public TestClass(
        IAbpSession abpSession,
        UserManager userManager)
    {
        _abpSession = abpSession;
        _userManager = userManager;
    }
}