ASP.NET Core中的会话状态

时间:2016-08-31 11:45:59

标签: c# asp.net-core asp.net-core-mvc

在常规MVC中,我以前能够做到以下几点:

public ActionResult SomeAction(){
    Session["User"] = new User();

    return View();
}

在视图中给我这个选项:

<div>
    @if(Session["User"] != null){
        <p>Welcome @Session["User"].Username</p>
    }
</div>

在ASP.NET Core中,由于各种操作系统能够运行此应用程序,因此未实现会话状态。我已经看到我可以使用IMemoryCacheIDistributedCache代替,但鉴于这种情况,我不太确定如何。

这样做的任何简单且解释良好的方法?

1 个答案:

答案 0 :(得分:0)

ASP.NET Core中的会话状态是可能的。我按照以下步骤修复了它:

将以下包添加到project.json
Microsoft.AspNetCore.Session

配置会话服务

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

        services.AddDistributedMemoryCache();
        services.AddSession(options => 
            // Add any options you want here
            // EXAMPLE
            options.IdleTimeout = TimeSpan.FromSeconds(60);
        );
    }

    public void Configure(IApplicationBuilder app)
    {
        app.UseSession();
        app.UseMvcWithDefaultRoute();
    }
}

全部完成
现在,您应该可以在控制器中执行以下操作

public class SomeController : Controller
{
    public IActionResult SomeAction()
    {
        TempData["SomeProperty"] = "Some data";
    }
}

在你看来:

<div>
    <p>@TempData["SomeProperty"]</p>
</div>

进一步阅读docs.microsoft.com documentation

的资料