我想在IIS上发布我的asp.net核心应用程序,即IIS作为反向代理和Core在1-n Kestrel上运行 .
我一直在阅读关于Sessions和.net核心缓存的内容 . 对于Sessions,显然建议仅在dev / test中使用内存中缓存,我认为原因是因为假设粘性会话不可用 .
但是,IIS可以提供粘性会话,即来自一个会话的所有请求都被路由到同一个Kestrel,因此内存中的Sessions应该没问题吗?
如果要部署到单个计算机,则使用内存中会话就可以了,如果测试站点位于单个计算机上就可以了 .
如果要在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
1 回答
如果要部署到单个计算机,则使用内存中会话就可以了,如果测试站点位于单个计算机上就可以了 .
如果要在Web场等部署,内存中的会话将无法运行,您将需要找到分布式会话存储的解决方案 . 如果是这种情况,你也可以实现这个并测试喜欢 .
这篇文章向您展示如何设置内存中的会话:https://www.exceptionnotfound.net/finding-and-using-asp-net-session-in-core-1-0/
基本设置:
和
然后调用SetString和GetString:
您可以查看以下内容以在SQL Server中存储会话 . http://www.mikesdotnetting.com/article/292/configuring-sql-server-for-session-state-in-asp-net-core-1-0-mvc