我有一个使用会话的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();
}
我还在project.json
文件中添加了KVM包"Microsoft.AspNet.Session": "1.0.0-beta3"
,并将应用程序配置为通过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会话的信息。我做错了什么?
发布于 2015-04-23 00:53:43
所以我想通了。实际上,修复方法非常简单。由于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();
}
发布于 2016-04-19 19:36:31
感谢@acrhistof链接的帮助。
因此,如果您正在使用RC1:在project.json中添加以下依赖项:
"Microsoft.AspNet.Session": "1.0.0-rc1-final",
"Microsoft.Extensions.Caching.Memory": "1.0.0",
在Startup.cs文件中:
public void ConfigureServices(IServiceCollection services)
{
services.AddCaching();
services.AddSession();
services.AddMvc();
}
和
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseSession(); //outside of dev if (env.IsDevelopment())
....
}
发布于 2016-02-22 17:12:02
似乎事情又一次发生了变化,必须在rc1中对众所周知的ASP.NET会话进行不同的配置。(没有UseInMemorySession()
或其他AppBuilder
方法与Session
相关,现在它被添加为服务)。
通常,必须安装、配置Session
,然后才能使用它。所有这些步骤都是相当新的,而且有些不同寻常。此外,它依赖于Cache:
会话是建立在
IDistributedCache
之上的,因此您也必须对其进行配置,否则将收到一个错误。
上面的引文来自ASP.NET 5文档。你所需要做的就是在这里描述:https://docs.asp.net/en/latest/fundamentals/app-state.html#installing-and-configuring-session。
https://stackoverflow.com/questions/29801631
复制相似问题