Pre*_*eli 9 session session-cookies asp.net-core asp.net-core-2.0
我正在尝试为asp.net core 2.0网站配置会话,但是从未设置会话cookie.
我打电话 ..
app.UseSession();
Run Code Online (Sandbox Code Playgroud)
...在Startup.Configure和...
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(10);
options.Cookie.HttpOnly = false;
options.Cookie.Name = "WS_AUTH_ID";
});
Run Code Online (Sandbox Code Playgroud)
...在ConfigureServices方法中.
在控制器中,我可以进行...
HttpContext.Session.Id;
Run Code Online (Sandbox Code Playgroud)
...但每个请求的ID总是不同的.
我错过了什么吗?
更新:我应该提醒我可以"手动"设置cookie,浏览器将"接收"它们.
HttpContext.Response.Cookies.Append("Test_cookie", "yo");
Run Code Online (Sandbox Code Playgroud)
Mar*_*ark 12
这是我的原因:
会话cookie的创建被extension Microsoft.AspNetCore.CookiePolicy(UseCookiePolicy)阻止.删除此扩展并在新的浏览器窗口中运行应用程序可解决此问题.
另一种解决方法可能是使应用程序在没有会话的情况下工作,直到用户接受cookie(我没有测试此解决方法).
希望有所帮助.
如果您启用了 cookie 策略,则在用户接受使用 cookie 之前不会创建会话 cookie,这是为了遵守欧盟的 GDPR。
您可以app.UseCookiePolicy();
从您那里删除该行
Startup,然后它就会起作用,否则您的用户将需要同意使用 cookie,然后您才能使用 cookie 进行会话控制。
您必须在ConfigureServices 方法中输入以下内容:
services.AddMvc()
.AddSessionStateTempDataProvider();
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(30);
options.Cookie.Name = ".MyApplication";
});
Run Code Online (Sandbox Code Playgroud)
在您的配置中输入以下内容
//enable session before MVC
app.UseSession();
app.UseMvc();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4870 次 |
| 最近记录: |