如何在 vNext Web 应用程序中进行服务器端状态管理

Posted

技术标签:

【中文标题】如何在 vNext Web 应用程序中进行服务器端状态管理【英文标题】:How to do server side state management in vNext Web Applications 【发布时间】:2014-09-29 11:37:29 【问题描述】:

之前我们有 Session 来管理 ASP.NET Web 应用程序中的状态。我正在尝试创建一个简单的 vNext MVC 应用程序,我需要在其中进行一些状态管理。现在因为 System.web 消失了,我如何在 MVC 6 应用程序中使用 Session。它在Microsoft.AspNet.Mvc 或其他任何地方是否仍然可用,或者是否有其他一些服务器端状态管理可用以及如何使用?请帮忙..

【问题讨论】:

我还没有深入研究 vNext,但据我了解,System.Web 现在不是什么禁忌的东西。如果你需要它,你包括它。如果不需要,例如在运行自托管的Web API 中,关键是能够将其删除。因此,如果您需要 Session,请添加 System.Web 引用并引导它。 指出这一点很重要:System.Web 仅在桌面 CLR (.net 4.5.1) 上运行时可用。如果你想在云优化的 CLR(CoreCLR)上运行 System.Web 就没有了 @VictorHurdugaci 好吧,我尝试使用 System.Web。在其中我发现只有以下三个类“AspNetHostingPermission”、“AspNetHostingPermissionAttribute”和“AspNetHostingPermissionLevel”没有“HttpSessionStateBase”抽象类即使我尝试创建一个 MVC 5 控制器(使用 System.Web)但没有 System.Web。 MV。没有找到任何 nuget 来引用 project.json 中的依赖项 @Riki 我已经更新了我的答案,因为 ASP.NET vNext 有一个新的会话状态中间件,您可以查看。 How to implement Session State in ASP.NET vNext MVC 6的可能重复 【参考方案1】:

2014 年 11 月 2 日更新

ASP.NET 团队已开始构建新的会话状态中间件以在 ASP.NET 5 中启用会话状态。您可以查看Session repo,它既有Session middleware,也有sample .

要在应用中启用会话状态,请调用:

app.UseSession();

并从中读取/写入:

var some_value = context.Session.GetInt("some_value").Value;
some_value++;
context.Session.SetInt("some_value", some_value);

原答案

会话状态尚未在 ASP.NET vNext 中实现,但已在计划中。您根本无法使用 System.Web 的会话状态,因为即使应用程序在完整的 .NET 上运行,System.Web 中的会话状态实现也与 ASP.NET vNext 不兼容。

【讨论】:

您的链接没有正确粘贴。 @DavidTansey 谢谢!我刚刚修好了,不知道是怎么回事! 我没有看到 app.UseSession();不再有效。现在是什么状态? @VuNguyen 它还在。 project.json 文件中是否有对 Microsoft.AspNet.Session 的引用?您遇到了什么错误? 我在 GitHub 上看到了存储库,当我从 nuGet 获得 Microsoft.AspNet.Session 时,我收到“还原时出错”。警告标记位于Microsoft.AspNet.Session 的引用节点处。

以上是关于如何在 vNext Web 应用程序中进行服务器端状态管理的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET 5 MVC 6 (vNext) 中定义 Identity 的密码规则?

Asp.net vNext 早期测试版发布到 Windows 服务器中的 IIS

F_01 采用Abp vnext构建Ngala.Iot平台的基础服务

ASP.NET vNext Core CLR 的模块化功能

ABP vNext报错:An unhandled exception occurred while processing the request.求大佬解惑??

abp vnext 开发快速入门 4 跨域设置