首页 文章

IIS上的ASP.NET核心粘性会话

提问于
浏览
0

我想在IIS上发布我的asp.net核心应用程序,即IIS作为反向代理和Core在1-n Kestrel上运行 .

我一直在阅读关于Sessions和.net核心缓存的内容 . 对于Sessions,显然建议仅在dev / test中使用内存中缓存,我认为原因是因为假设粘性会话不可用 .

但是,IIS可以提供粘性会话,即来自一个会话的所有请求都被路由到同一个Kestrel,因此内存中的Sessions应该没问题吗?

1 回答

  • 1

    如果要部署到单个计算机,则使用内存中会话就可以了,如果测试站点位于单个计算机上就可以了 .

    如果要在Web场等部署,内存中的会话将无法运行,您将需要找到分布式会话存储的解决方案 . 如果是这种情况,你也可以实现这个并测试喜欢 .

    这篇文章向您展示如何设置内存中的会话:https://www.exceptionnotfound.net/finding-and-using-asp-net-session-in-core-1-0/

    基本设置:

    public void ConfigureServices(IServiceCollection services)  
    {
        ...
        services.AddMemoryCache();
        services.AddSession(options =>
        {
            options.IdleTimeout = TimeSpan.FromMinutes(60);
            options.CookieName = ".MyCoreApp";
        });
        ...
    }
    

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerfactory)  
    {
        ...
        app.UseSession();
        ...
    }
    

    然后调用SetString和GetString:

    Context.Session.SetString("UserName", "John Smith");
    var userName = Context.Session.GetString("UserName");
    

    您可以查看以下内容以在SQL Server中存储会话 . http://www.mikesdotnetting.com/article/292/configuring-sql-server-for-session-state-in-asp-net-core-1-0-mvc

相关问题