当我继承了一个需要升级到.net core 2.2的项目时,我遇到了多个依赖项的问题。
在这里我想念HttpSessionState
private static string CollectionToHtmlTable(HttpSessionState collection)
{
// Converts HttpSessionState to NameValueCollection
var nvc = new NameValueCollection();
foreach (string item in collection)
{
nvc.Add(item, collection[item].ToString());
}
return CollectionToHtmlTable(nvc);
}
如何在.net核心类库中访问HttpSessionState
的一些好的代码示例?
答案 0 :(得分:1)
Microsoft.AspNetCore.Session
元软件包中包含的Microsoft.AspNetCore.App
软件包提供了用于管理会话状态的中间件。
要启用会话中间件,启动必须包含:
AddSession
中的ConfigureServices
。UseSession
中的Configure
。代码:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
// Set a short timeout for easy testing.
options.IdleTimeout = TimeSpan.FromSeconds(10);
options.Cookie.HttpOnly = true;
});
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseSession();
app.UseHttpContextItemsMiddleware();
app.UseMvc();
}
}
配置会话状态后, HttpContext.Session
可用。
HttpContext.Session
在调用UseSession
之前无法访问。
InvalidOperationException
之后调用UseSession
时,发生 UseMvc
异常。
可以使用HttpContext.Session
从Razor Pages PageModel类或MVC Controller类访问会话状态。此属性是ISession
的实现。
ISession
实现提供了几种扩展方法来设置和获取整数和字符串值。扩展方法位于Microsoft.AspNetCore.Http
命名空间中(添加一个
using Microsoft.AspNetCore.Http;
声明以访问扩展方法)
项目引用Microsoft.AspNetCore.Http.Extensions
程序包时。
访问类库中的Httpcontext:
HttpContext
在控制器中可用,但是要访问其他类,您需要在类中插入IHttpContextAccessor
。
要访问会话,请使用以下代码:-
var sessionValue =_context.HttpContext.Session.GetString("KeyName");
更多详细信息,请访问: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state?view=aspnetcore-2.2