我有一个使用Session的ASP.Net vNext项目。但是我在尝试获取/设置会话中的值时遇到此错误。
Microsoft.AspNet.Http.Core.dll中发生类型'System.InvalidOperationException'的异常,但未在用户代码中处理
附加信息:尚未为此应用程序或请求配置会话。
这是我的控制器方法:
[AllowAnonymous]
[HttpGet("/admin")]
public IActionResult Index()
{
if (Context.Session.GetString("UserName") == null) // error thrown here
{
return RedirectToAction("Login");
}
return View();
}
我也在文件中添加了KVM软件包"Microsoft.AspNet.Session": "1.0.0-beta3"
,project.json
并配置了我的应用程序以通过会话使用会话,Startup.cs
如下所示:
public void ConfigureServices(IServiceCollection services)
{
// code removed for brevity
services.AddCachingServices();
services.AddSessionServices();
}
public void Configure(IApplicationBuilder app)
{
app.UseMvc();
app.UseInMemorySession(configure: s => s.IdleTimeout = TimeSpan.FromMinutes(30));
}
我查看了Github上的vNext文档,但是它没有提供有关ASP.Net会话的大量信息。我究竟做错了什么?
所以我想通了。解决方法实际上非常简单。由于ASP.Net将中间件顺序地添加到请求管道中,所以我需要做的就是在使用MVC之前使用会话中间件。更多信息在这里:https : //stackoverflow.com/a/29569746/832546
固定代码:
public void Configure(IApplicationBuilder app)
{
app.UseInMemorySession(configure: s => s.IdleTimeout = TimeSpan.FromMinutes(30));
app.UseMvc();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句