ServiceStack - System.Web.HttpContext.Current.Session 为空

Posted

技术标签:

【中文标题】ServiceStack - System.Web.HttpContext.Current.Session 为空【英文标题】:ServiceStack - System.Web.HttpContext.Current.Session is null 【发布时间】:2021-05-30 23:38:49 【问题描述】:

我有与 ServiceStack API 集成的遗留 .net mvc 应用程序,我需要从 ServiceStack API 获取/设置会话值,以便与遗留系统通信以确保正常工作。我探索了 ServiceStack 文档/其他材料中可用的多个选项,但在我的情况下似乎没有任何效果。

启用会话功能:

Plugins.Add(new SessionFeature());

尝试直接使用:

HttpContext.Current.Session

另一种方式:

var req = (HttpRequest)base.RequestContext.Get<IHttpRequest>().OriginalRequest;
var session = req.RequestContext.HttpContext.Session;

但它们似乎都不起作用。

reference

【问题讨论】:

【参考方案1】:

ServiceStack Sessions 是一个完全独立的实现,不依赖或耦合到 ASP.NET 的会话。

要在 ServiceStack 请求中启用对 ASP.NET 会话的访问,您需要使用 IRequiresSessionState 接口装饰其 IHttpHandler,如 Enable ASP.NET Sessions 文档所述。

【讨论】:

以上是关于ServiceStack - System.Web.HttpContext.Current.Session 为空的主要内容,如果未能解决你的问题,请参考以下文章

ServiceStack:升级到 5.4.1 在 ServiceStack.Common 上给了我 ReflectionTypeLoadException

如何在 ServiceStack 5.0 项目中使用来自 ServiceStack 4.0 的服务模型?

具有模式的 ServiceStack IRedisClient ScanAllKeys 未按预期返回结果 (ServiceStack 5.7.0)

ServiceStack:添加 Blazor 支持?

ServiceStack.OrmLite 调用存储过程

哪个 Canoe 版本与链接中为 REDIS 客户端实现提供的 soln 兼容 https://github.com/ServiceStack/ServiceStack.Redis