如何在 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平台的基础服务
ABP vNext报错:An unhandled exception occurred while processing the request.求大佬解惑??