我想在IIS上发布我的asp.net核心应用程序,即IIS作为反向代理和Core在1-n Kestrel上运行。
我一直在阅读.net核心中的Sessions和缓存。对于Sessions,显然建议仅在dev / test中使用内存中缓存,我认为原因是因为假设粘性会话不可用。
但是,IIS可以提供粘性会话,即来自一个会话的所有请求都被路由到同一个Kestrel,因此内存中的Sessions应该没关系吗?
答案 0 :(得分: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