首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法在ASP.Net vNext项目中使用会话

无法在ASP.Net vNext项目中使用会话
EN

Stack Overflow用户
提问于 2015-04-22 23:03:13
回答 3查看 12.5K关注 0票数 21

我有一个使用会话的ASP.Net vNext项目。但我在会话中尝试获取/设置值时遇到此错误。

Microsoft.AspNet.Http.Core.dll中发生了类型为“System.InvalidOperationException”的异常,但未在用户代码中进行处理

附加信息:尚未为此应用程序或请求配置会话。

下面是我的控制器方法:

代码语言:javascript
复制
    [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使用会话,如下所示:

代码语言:javascript
复制
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会话的信息。我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-23 00:53:43

所以我想通了。实际上,修复方法非常简单。由于ASP.Net将中间件按顺序添加到请求管道中,因此在使用MVC之前,我所需要做的就是使用会话中间件。更多信息请点击此处:https://stackoverflow.com/a/29569746/832546

修复代码:

代码语言:javascript
复制
public void Configure(IApplicationBuilder app)
{
    app.UseInMemorySession(configure: s => s.IdleTimeout = TimeSpan.FromMinutes(30));
    app.UseMvc();
}
票数 26
EN

Stack Overflow用户

发布于 2016-04-19 19:36:31

感谢@acrhistof链接的帮助。

因此,如果您正在使用RC1:在project.json中添加以下依赖项:

代码语言:javascript
复制
 "Microsoft.AspNet.Session": "1.0.0-rc1-final",
 "Microsoft.Extensions.Caching.Memory": "1.0.0",

在Startup.cs文件中:

代码语言:javascript
复制
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddCaching();
        services.AddSession();
        services.AddMvc();
    }

代码语言:javascript
复制
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
     app.UseSession(); //outside of dev  if (env.IsDevelopment())
     ....
     }
票数 16
EN

Stack Overflow用户

发布于 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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29801631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档