1

我对 ASP.NET Core 和 DDD(域驱动设计)完全陌生。我最近购买了ASP.NET 零启动模板,以减轻入门的痛苦和学习曲线。我喜欢这个项目,但我在会话状态方面遇到了困难。

我在我们的应用程序中使用第三方组件,例如Neodynamic products

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

有人可以让我开始吗?

4

2 回答 2

1

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

于 2018-01-23T04:04:38.747 回答
0

UserManager类为您提供当前用户的信息。

例子:

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

IAbpSession AbpSessionApplicationService还可以通过从抽象类继承来为您提供有用的信息。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;
    }
}
于 2018-01-15T19:01:22.870 回答