hyd*_*yde 20 c# asp.net asp.net-mvc session
我有一个使用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();
}
Run Code Online (Sandbox Code Playgroud)
我已经"Microsoft.AspNet.Session": "1.0.0-beta3"在我的project.json文件中添加了KVM包,并将我的应用程序配置为通过我的方式使用会话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));
}
Run Code Online (Sandbox Code Playgroud)
我查看了Github上的vNext文档,但它没有提供有关ASP.Net会话的大量信息.我究竟做错了什么?
hyd*_*yde 25
所以我想出来了.实际上修复非常简单.由于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();
}
Run Code Online (Sandbox Code Playgroud)
Joh*_*ink 15
感谢@acrhistof链接帮助.
因此,如果您正在使用RC1:在project.json中添加这些依赖项:
"Microsoft.AspNet.Session": "1.0.0-rc1-final",
"Microsoft.Extensions.Caching.Memory": "1.0.0",
Run Code Online (Sandbox Code Playgroud)
在Startup.cs文件中:
public void ConfigureServices(IServiceCollection services)
{
services.AddCaching();
services.AddSession();
services.AddMvc();
}
Run Code Online (Sandbox Code Playgroud)
和
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseSession(); //outside of dev if (env.IsDevelopment())
....
}
Run Code Online (Sandbox Code Playgroud)
事情似乎再次发生了变化,众所周知的 ASP.NET 会话必须在 rc1 中进行不同的配置。(没有UseInMemorySession()或其他AppBuilder方法与 相关Session,现在作为服务添加)。
通常Session必须安装、配置和使用。所有这些步骤都很新,而且有些不寻常。此外,它取决于缓存:
Session 建立在 之上
IDistributedCache,因此您也必须对其进行配置,否则您将收到错误消息。
上面的引用来自 ASP.NET 5 文档。您需要做的就是在这里描述:https : //docs.asp.net/en/latest/fundamentals/app-state.html#installing-and-configuring-session。
| 归档时间: |
|
| 查看次数: |
10817 次 |
| 最近记录: |